为什么run中的线程没有打印 主线程执行到i=5的时候 子线程还没启动,所以就没打印了。要打印的话,每次i++的时候都给它wait一下就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用vim 秒删行号linux? 用vim 秒删行号linux?public class ThreadLift{ public static void main(String[] args) { ThreadTest t=new ThreadTest(); new Thread(t).start(); for(int i=0;i<10;i++) { if(i==5) t.stopMe(); System.out.println("main"); } }}class ThreadTest implements Runnable{ private boolean bFull=true; public void stopMe() { bFull=false; } public void run() { while(bFull) { System.out.println(Thread.currentThread().getName() + "cccc"); } }} mainmainmainmainmainmainmainmainmainmainThread-0cccc你想怎样 public class ThreadLift{ public static void main(String[] args) { ThreadTest t=new ThreadTest(); new Thread(t).start(); for(int i=0;i<10;i++) { try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(i==5) t.stopMe(); System.out.println("main"); } }}class ThreadTest implements Runnable{ private boolean bFull=true; public void stopMe() { bFull=false; } public void run() { while(bFull) { System.out.println(Thread.currentThread().getName() + "cccc"); } }}Thread-0ccccThread-0ccccThread-0ccccThread-0ccccThread-0ccccThread-0ccccThread-0ccccmainmainmainmainmain不是不打印的。你的这个程序,有两个线程,一个主线程,一个子线程。当你启动子线程的时候,还没有获得系统分配资源,意思就是这个子线程是一个可运行状态。而主线程已经一直往下执行,当主线程在for循环中,可能执行了许久,子线程才运行。所以你可以用sleep(10)来给主线程睡眠一下,你就可以看到其实子线程也在跑,不要让子线程一下跑到了i==5的时候,子线程还没有运行。总结一下。子线程start(),不代表马上运行,只能说它是一个可运行状态,这个时候,这个线程会交给系统自己调度。 希望能对你有帮助。 越来越不明白了,JAVA Class-Path中必须加上dt.jar和Tools.jar? 认为高手的进来看看 applet网页中不显示 load:class XX not found frame中图片和几个按钮(或者文本区),如何让这些全部都显示出来 一个关于String类的问题? 关于输入 大家快来改程序!!! 多线程_先产后销_运行结果有BUG 编写JAVA程序导(倒)数据 SMTP 发信通过验证了,可没有发出信怎么回事?附程序 谢谢!!! 求高手点拨一个Java MyEclipse的调错问题. 新手请教JAVA全排列
linux?
linux?public class ThreadLift
{
public static void main(String[] args)
{
ThreadTest t=new ThreadTest();
new Thread(t).start();
for(int i=0;i<10;i++)
{
if(i==5)
t.stopMe();
System.out.println("main");
}
}
}class ThreadTest implements Runnable
{
private boolean bFull=true; public void stopMe()
{
bFull=false;
}
public void run()
{
while(bFull)
{
System.out.println(Thread.currentThread().getName() + "cccc");
}
}
}
main
main
main
main
main
main
main
main
main
Thread-0cccc你想怎样
{
public static void main(String[] args)
{
ThreadTest t=new ThreadTest();
new Thread(t).start();
for(int i=0;i<10;i++)
{
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(i==5)
t.stopMe();
System.out.println("main");
}
}
}class ThreadTest implements Runnable
{
private boolean bFull=true; public void stopMe()
{
bFull=false;
}
public void run()
{
while(bFull)
{
System.out.println(Thread.currentThread().getName() + "cccc");
}
}
}
Thread-0cccc
Thread-0cccc
Thread-0cccc
Thread-0cccc
Thread-0cccc
Thread-0cccc
Thread-0cccc
main
main
main
main
main不是不打印的。你的这个程序,有两个线程,一个主线程,一个子线程。当你启动子线程的时候,还没有获得系统分配资源,意思就是这个子线程是一个可运行状态。而主线程已经一直往下执行,当主线程在for循环中,可能执行了许久,子线程才运行。所以你可以用sleep(10)来给主线程睡眠一下,你就可以看到其实子线程也在跑,不要让子线程一下跑到了i==5的时候,子线程还没有运行。总结一下。子线程start(),不代表马上运行,只能说它是一个可运行状态,这个时候,这个线程会交给系统自己调度。 希望能对你有帮助。