黑马程序员技术交流社区
标题:
关于多线程的运行时间问题
[打印本页]
作者:
请叫我马里奥
时间:
2013-10-6 11:37
标题:
关于多线程的运行时间问题
class Test extends Thread
{
private String name;
Test(String name)
{
this.name=name;
}
public void run()
{
for(int i=0;i<60;i++)
{
System.out.println(name+"run"+i);
}
}
}
abstract class GetTime
{
public final void getTime()
{
long start=System.currentTimeMillis();
runcode();
long end=System.currentTimeMillis();
System.out.println("shijian....."+(end-start));
}
public abstract void runcode();
}
class SubTime extends GetTime
{
public void runcode()
{
Test t1=new Test("test1");
Test t2=new Test("test2");
t1.start();
t2.start();
}
}
public class demo1 {
public static void main(String[] args)
{
SubTime gt=new SubTime();
gt.getTime();
}
}
我想计算一下t1.start和t2.start的运行时间,应该把System.out.println("shijian....."+(end-start));放在什么地方才对呢?
作者:
横塘西岸
时间:
2013-10-6 16:16
我的理解是放在t1.start 和t2.start下面
作者:
kellyzyb
时间:
2013-10-9 21:40
线程运行代码里面最后一行代码。就是你for循环的外面。
作者:
王飚
时间:
2013-10-10 01:20
/*
楼主想要获得t1和t2线程运行的时间,但是你的代码出现的问题是因为主线程瞬间执行了你的
打印时间语句;
所以,你的程序中一共有三个线程:主线程+t1线程+t2线程。那么要获得t1和t2的运行时间,
就要到它执行完run(){}方法之后,所以,我在下面做了注释,帮楼主将打印时间语句放在了for()之后,
在本程序中,只有等t1,t2线程执行完循环后线程才能获得线程运行时间,代码如下:
*/
class Test extends Thread
{
static int i;
private String name;
Test(String name)
{
this.name=name;
}
public void run()
{
long start=System.currentTimeMillis();
for( i=0;i<600;i++)
{
System.out.println(name+"run"+i);
}
long end=System.currentTimeMillis();
//将时间获取定义在下面,也就是等到t1和t2线程执行完成后再打印时间:
System.out.println(Thread.currentThread().getName()+"shijian....."+(end-start));//
}
}
abstract class GetTime
{
public final void getTime()
{
runcode();
}
public abstract void runcode();
}
class SubTime extends GetTime
{
public void runcode()
{
Test t1=new Test("test1");
Test t2=new Test("test2");
t1.start();
t2.start();
}
}
class demo1 {
public static void main(String[] args)
{
SubTime gt=new SubTime();
gt.getTime();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2