今天呢,学习了javase多线程,里面的睡眠sleep问题有点困扰:
public class Thread_06_stopSleep{ public static void main(String[] args)throws Exception{ Processor p = new Processor(); Thread t = new Thread(p); t.start();// Thread.sleep(5000);//Thread:代表了当前代码所在的类那个线程,main() for(int i=0; i < 10; ++i){ System.out.println( Thread.currentThread().getName()+"----->" + i ); } p.run = false; } } class Processor implements Runnable{ boolean run = true; public void run(){ for(int i=0; i < 10; ++i){ if (run) {//如果run为假的话.sleep就不执行了 try{ Thread.sleep(1000); }catch(Exception e){ e.printStackTrace(); } System.out.println( Thread.currentThread().getName()+"----->" + i ); }else{ System.out.println( "sleep,被唤醒了" ); return; //终止函数运行,这里也就是杀死当前线程 } } }
但是为什么输出完以后,为什么下面还有一次为真?效果图如下:
为什么还有第五次,不是第五次的时候就已经将false传入了么,求高手指点迷津!!
对了,还有我因为也是初学,发的文章也没有什么技术含量,你们要转载就随便转,但是请把我的链接加上,OK?
时间: 2024-10-14 04:24:19