黑马程序员技术交流社区
标题:
多线程问题
[打印本页]
作者:
莫运飞
时间:
2012-4-6 09:18
标题:
多线程问题
class Test extends Thread
{
public void run()
{
{
for(int x=0;x<80;x++)
System.out.println("线程跑起来"+x);}
}
}
class ThreadDemo
{
public static void main(String[] args)
{
Test d=new Test();
d.run();
for(int x=0;x<80;x++)
System.out.println("线程停止"+x);
}}
程序运行起来应该是混乱的,因为程序里面有main 主线程和d线程,这两个程序同时存在并运行。
多线程有一个特性:随机性,就是哪个线程抢到内存的资源就执行谁。
,所以程序里面main 主线程和d线程互强系统内存的资源,谁抢到了就先执行谁,这样打印出来的结果就是没有顺序的。
且每次运行程序打印的结果都不一样。
但为什么在这里怎么打印的怎么都是有顺序的呢???????????
作者:
宋蕈
时间:
2012-4-6 09:54
这个你必须设置一个高点的循环数 才可能 看出来,因为,cpu的运行速度是非常快的。
作者:
金兴
时间:
2012-4-6 10:16
你调用的方法不对 , Test d=new Test(); d.run(); 改成 d.start(); 这样运行的结果就是无序的了, 你调用run()方法, 线程根本没有和主方法一起运行
你调用start()方法,这样才启动线程,这样主方法和线程同时运行,结果也就是无序的了 .
作者:
江远云
时间:
2012-4-6 10:16
把for循环的条件静态式写大一点,要不就让它一直转,看到了按然后按ctrl+c
作者:
葛尧
时间:
2012-4-6 18:46
你没发现 你继承了Thread类,复写了run()
但是那里就直接调用d.run()了。。根本没开启线程
作者:
刘_浩
时间:
2012-4-7 10:48
哥们,这只是建立了线程,但是没有开起线程,我也刚学到这里。你应该加一个d.start()在d.run()前面就可以跑起来了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2