黑马程序员技术交流社区
标题:
多线程
[打印本页]
作者:
山水游客
时间:
2012-6-3 15:19
标题:
多线程
public class RunnableDemo implements Runnable
{
@Override
public void run()
{
for (int i = 0; i < 10; i++)
{
System.out.println("新线程为:" + i);
}
}
public static void main(String[] args)
{
Runnable runnable = new RunnableDemo();
Thread thread = new Thread(runnable);
thread.start();
for (int i = 0; i < 10; i++)
{
System.out.println("主线程输出: " + i);
}
}
}
调试的结果是
主线程输出: 0
主线程输出: 1
主线程输出: 2
主线程输出: 3
主线程输出: 4
主线程输出: 5
主线程输出: 6
主线程输出: 7
主线程输出: 8
主线程输出: 9
新线程为:0
新线程为:1
新线程为:2
新线程为:3
新线程为:4
新线程为:5
新线程为:6
新线程为:7
新线程为:8
新线程为:9
怎么没有出现多线程运行的for循环语句交替输出的效果呢?
作者:
梁小波
时间:
2012-6-3 15:24
循环太少了。i<1000试一下;
作者:
黑马—陈磊
时间:
2012-6-3 15:27
因为在执行run()时, main()中的for循环已经完成,因为循环次数少的速度快,所以在执行run() 方法时 ,“ main()中的for循环输出已经完成,你可以把
下面一个for循环的次数改为500,就可以看到效果了。
作者:
信义明
时间:
2012-6-3 15:27
多运行几次
作者:
李春阳
时间:
2012-6-3 16:28
这位同学,黑马视频里的
线程
部分有说明哈,小弟在这里说点自己的理解哈。
问题原因:
首先,多线程同时并列进行,只是理论上的,就我们现在大部分人用的单核处理器电脑来说。
所谓的多线程就是,看CPU心情啦,给你运行一会~给他运行一会~ 因为速度太快,所以感觉上就像同时并行的进行一样~
就像老师说的那样“像是两个人在互相抢CPU,你抢到一会就运行一会,他抢到了他又运行一会。。。”
所以你的机器好的话,且事例循环次数太少就会发生- - 刷~的一下,一个线程直接运行结束,然后另一个再进行。
解决办法:
1是可以添加循环次数~
2是多运行几次看看~
应该就可以看出效果啦
作者:
何拴绪
时间:
2012-6-3 19:39
本帖最后由 何拴绪 于 2012-6-3 19:43 编辑
你的循环次数过少,Cpu执行速度很快,main线程已经结束了,run方法才开始执行。楼主可以将两个for循环中添加线程sleep方法,并将循环次数改大一点,这样就可以看到明显的效果了,你的代码我修该了一下:
public class RunnableDemo implements Runnable
{
@Override
public void run()
{
for (int i = 0; i < 100;i++)
{
try{Thread.sleep(100);}catch(Exception e){};
System.out.println("新线程为:" + i);
}
}
public static void main(String[] args) throws Exception
{
Runnable runnable = new RunnableDemo();
Thread thread = new Thread(runnable);
thread.start();
for (int i = 0; i < 50; i++)
{
Thread.sleep(100);//主线程sleep100毫秒
System.out.println("主线程输出: " + i);
}
}
}
复制代码
作者:
陌花╮有意、
时间:
2012-6-3 21:00
主线程循环次数太少,当run()函数还没运行时main函数的for循环已经完毕,建议将主函数循环改大或者多试几次应该有效果
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2