Java中的线程问题

[复制链接]
查看11 | 回复2 | 2008-8-21 16:15:35 | 显示全部楼层 |阅读模式
public class ThreadTerminate {

public static void main(String args[ ]) throws Exception{

int i=0;
Hello h = new Hello();

Thread t = new Thread( h);
t.setPriority(Thread.MAX_PRIORITY);
t.start( );

System.out.println("Please stop saying Hello and say good morning!");
h.stopRunning();

while( i<5){



System.out.println("Good Morning"+i++);


}

}
}
class Hello implements Runnable{


int i = 0;

private booleantimeToQuit = false;



public void run( ){
while(!timeToQuit){

System.out.println(" Hello"+i++);
try{

if (i%2 == 0 )

Thread.sleep(10);

} catch(Exception e){ }

}

}



public void stopRunning( ){
timeToQuit = true ;

}
}
以上程序中的
private booleantimeToQuit = false;
public void stopRunning( ){
timeToQuit = true ;
二句是什么意思呢?
程序为什么会到Hello3停呢?
程序运行结果
Hello0
Hello1
Hello2
Hello3后就跳到了Please stop saying Hello and say good morning!
这里t每输出二行主休眠10秒..那它就是二次休眠后才执行了...
那stopRunning()这个方法是怎么运行到的呢?
为什么不是Hello1后休眠10秒就运行呢?

回复

使用道具 举报

千问 | 2008-8-21 16:15:35 | 显示全部楼层
public void stopRunning( ){ timeToQuit = true ; 这个是控制线程的,和上面的while(!timeToQuit){ 有关因为当timeToQuit不等于true的时候线程才运行,所以public void stopRunning( ){ 这个方法是用来控制线程停下来的为什么会停呢?就是因为运行了 stopRunning这个方法啊,而停的时候刚好就是i=3的情况,假如你的机性能特别特别差的话就可能出现hello4或者hello5之类的情况咯...
回复

使用道具 举报

千问 | 2008-8-21 16:15:35 | 显示全部楼层
budong...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行