求解JAVA编程题:编写一个应用程序,创建三个线程分别显示各自的运行时间

供稿:hz-xin.com     日期:2025-01-13
用java编程:创建三个线程,分别显示各自的开始运行时间及总运行时间

public class AThread extends Thread {
private String name;

public AThread(String name) {
this.name = name;
}
public void run() {
long startTime = System.currentMillis();
System.out.println(name + " start at : " + startTime);
Thread.sleep(1000);
System.out.println(name + " totoal cost : " + (System.currentMillis() - startTime));
}
}

public class Test {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
AThread t = new AThread("thread " + i);
t.start();
}
}
}

代码。
觉得好就加到100分吧。呵呵

_-----------------------------------------------
import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JFrame;

public class AppDemo extends JFrame implements Runnable {

private int index = 1;
private JButton btnFirst = null;
private JButton btnSecond = null;
private JButton btnThird = null;

public AppDemo() {
getContentPane().setLayout(null);

btnFirst = new JButton("first");
btnFirst.setBackground(Color.RED);
btnFirst.setBounds(10, 60, 85, 23);
getContentPane().add(btnFirst);

btnSecond = new JButton("second");
btnSecond.setBackground(Color.GREEN);
btnSecond.setBounds(100, 60, 85, 23);
getContentPane().add(btnSecond);

btnThird = new JButton("third");
btnThird.setBackground(Color.BLUE);
btnThird.setBounds(200, 60, 85, 23);
getContentPane().add(btnThird);

new Thread(this).start();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(450, 300);
setVisible(true);
}

public static void main(String[] args) {
new AppDemo();
}

public void run() {
while (true) {
try {
if (index == 1) {
btnFirst.setBounds(btnFirst.getX() + 5, 60, 85, 23);
if (btnFirst.getX() == 100) {
break;
}
} else if (index == 2) {
btnSecond.setBounds(btnSecond.getX() + 5, 60, 85, 23);
if (btnSecond.getX() == 200) {
break;
}
} else {
btnThird.setBounds(btnThird.getX() + 5, 60, 85, 23);
if (btnThird.getX() == 300) {
break;
}
}

Thread.sleep(500);
} catch (Exception e) {

}
}
if (index < 4) {
index++;
new Thread(this).start();
}
}
}

public class ThreadRuningTime {
public static AtomicInteger integer = new AtomicInteger(0);
public static AtomicInteger s = new AtomicInteger(0);
public static int threadNum = 3;
public static void main(String[] args) {

for (int i = 0; i < threadNum; i++) {
new Thread(new MyThread()).start();
}


new Thread(new Runnable() {
public void run() {
while(true) {
if (s.get()==threadNum) {
System.out.println(integer.get());
break;
}
}
}
}).start();
}
public static class MyThread implements Runnable {
@Override
public void run() {
long startTime = System.currentTimeMillis();
try {
Thread.sleep(new Random().nextInt(2000));
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < 10000000; i++) {
integer.incrementAndGet();
}

System.out.println(Thread.currentThread().getName()+" running time "+(System.currentTimeMillis()-startTime+"ms"));
s.incrementAndGet();
}

}
}



用Calendar的话,打印时间的地方就改为Calendar.getInstance().getTime() 

我很奇怪,为什么代码贴不上来?? 图片也插入不了?



import java.util.Calendar;
import java.util.concurrent.locks.Lock;

public class MultiThread {
static Lock mylock;
public static void main(String[] args) {
RunningObject1 r1 = new RunningObject1();

Thread t1 = new Thread(r1, "t1");
Thread t2 = new Thread(r1, "t2");
Thread t3 = new Thread(r1, "t3");
t1.start();
t3.start();
t2.start();
}

static class RunningObject1 implements Runnable {
public void run() {
synchronized(this){
String name=Thread.currentThread().getName();
System.out.println(name+"开始时间:"+Calendar.getInstance().getTimeInMillis());

for (int i = 0; i < 100000000; i++) {
if (i == 9999999) {
System.out.println(name+"结束时间:"+Calendar.getInstance().getTimeInMillis());
break;
}
}
}
}
}

}

public class ThreadE{
class Thread2 implements Runnable{
public void run(){
System.out.println(Thread.currentThread().getName()+" run "+Calendar.getInstance().getTime());
}
}

public static void main(String[] args) {
ThreadE te = new ThreadE();
new Thread(te.new Thread2()).start();
new Thread(te.new Thread2()).start();
new Thread(te.new Thread2()).start();
}
}


import java.util.Calendar;

public class MyThread implements Runnable{

String name;

public MyThread(String name){

this.name = name;

}

@Override

public void run() {

Calendar time1  = Calendar.getInstance();

long t1 = time1.getTimeInMillis();

/*---------------------

线程体

-----------------------------------*/

Calendar time2  = Calendar.getInstance();

long t2 = time2.getTimeInMillis();

System.out.println("线程"+name+"运行时间为:"+(t2-t1)+"毫秒");

}


}



试编写一个java应用程序,要求输入一个圆的半径,输出其面积
代码为:Scanner scanner=new Scanner(System.in);System.out.println("请输入圆的半径:");int r=Integer.parseInt(scanner.next()); \/\/获取半径System.out.println("圆的面积为:"+Math.PI*r*r);

编写一个完整的Java应用程序,程序中包含类Rectangle、Test,具体要求如...
import java.util.Scanner;public class Test7 { \/\/ Rectangle、Test,具体要求如下:\/\/ 类Rectangle:\/\/ 属性: chang:表示长方形的长,kuan:表示长方形的宽,都为double类型。\/\/ 方法:double getArea():求长方形的面积 \/\/ double getPerimeter ():求长方形的周长 \/\/ Test类作为主应用程序...

Java题,用Eclipse编写一个程序
在实际应用中,我们可以通过实例化SeqList对象并调用其insert和view方法来操作序列列表。例如,我们可以先创建一个SeqList对象,然后多次调用insert方法插入不同元素,并最终调用view方法来查看当前序列列表中的所有元素。通过这种方式,我们不仅能够实现序列列表的基本功能,还能够学习到如何使用Eclipse编写Java程...

编写一个简单java应用程序
public static boolean isTrangle(double a, double b, double c){\/\/判断三个数能否构成一个三角形 if(a <= 0 || b <=0 || c<=0){ return false;} return a + b > c && a + c > b && b + c > a;} } class Lader{ private double a;\/\/上底 private double b;\/\/下底...

编写一个Java应用程序,要求如下:
我刚好谢了一个 绝对原创用到了图片,你可以将图片的代码删掉import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;public class Notepad extends JFrame implements ActionListener {JMenuBar jbar; \/\/菜单条JMenu wj,bj,bz; \/\/菜单JMenuItem open,save,osav...

编写一个Java应用程序,计算10!
public class test{ public static void main(String[] args) { int sum = 1;for (int i=1;i<=10;i++) { sum*=i;} System.out.println("10!="+sum);} }

Java编写一个应用程序,用户从键盘输入一行含有数字字符的字符串,程序...
实现你爹功能,用正则表达式处理选择字符的问题 import java.util.Scanner;\/\/java.util.Scanner的使用 public class h { public static void main(String args[]){ Scanner input = new Scanner(System.in);System.out.println("请输入字符:");while (input.hasNext()) { String a = input.next...

编写一个Java的应用程序,输出自己的名字100次,例如:李三1,李三2
由于名字是一样的,只需要利用循环结构,控制名字后面的数字就可以了,为了有良好的编程习惯,还要注意编程时的缩进。其实现如下所写:public class OutName { public static void main(String [] args){ for(i=1;i<=100;i++){ System.out.println("李三"+i);} } } 他没定义i,运行不了 这...

JAVA 编写一个带有窗口的应用程序
这样:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.awt.Graphics;public class MainClass extends JFrame { public JComboBox box;int flag = 0;jpNewPanel jpNewPanel;public static void main(String[] args) { MainClass frame = new MainClass();frame....

编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分...
我给你一个类似的代码,你自己改一下就可以了,我不给你该了。希望对你有所帮助!<---服务器端---> \/\/实现多线程的网络连接 package cn.socket;import java.io.*;import java.net.*;public class SocketServerTrue { public SocketServerTrue(){ try { \/\/服务器开启一个端口 System.out.pri...