多线程?帮帮忙,谢谢!!!

wonkju 2012-07-30 11:21:51
public class MyThread{
public static void main(String[] args){
ThreadDemo t = new ThreadDemo();
new Thread(t).start(); //启动线程.
new Thread(t).start();
for(int i=0;i<10000 ;i++ ){ //主线程.
if (i==50){
t.stopMe();
}
System.out.println("mainThread is running");
}
}
}

class ThreadDemo implements Runnable{
private boolean tFlag=true;
public void run(){
while(tFlag){
System.out.println(Thread.currentThread().getName()+"runing...");
}
}
public void stopMe(){ //停止线程.
tFlag=false;
}
}

问:为什么的我的别的线程都没有启动,只有我的主线程启动?
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wonkju 2012-08-03
  • 打赏
  • 举报
回复
谢谢咯。
sffx123 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

多线程的执行结果没有确然性,别的线程完全有机会启动,给你看一下我本机运行的部分结果
mainThread is running
Thread-0runing...
Thread-1runing...
mainThread is running
mainThread is running
所以程序没啥问题,你多跑几次还有从头到尾认真看看就可以看到其他线程也运行了
[/Quote]这是一种可能的情况,还有可能是Thread.start()并不会马上启动该线程,并且创建线程需要花费时间,这过程中很可能t线程没启动,而主线程执行到t.stopMe();循环很快的,所以线程可能执行了但是直接返回没有输出。电脑的不同可能会有不同的结果,主线程加个Thread.sleep(1000)应该就可以看到多线程效果了
风尘中国 2012-07-31
  • 打赏
  • 举报
回复
多线程的执行结果没有确然性,别的线程完全有机会启动,给你看一下我本机运行的部分结果
mainThread is running
Thread-0runing...
Thread-1runing...
mainThread is running
mainThread is running
所以程序没啥问题,你多跑几次还有从头到尾认真看看就可以看到其他线程也运行了

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧