//1、设置标志位privateBoolean flag=true;@Overridepublicvoidrun(){int i=0;while(flag){System.out.println(Thread.currentThread().getName()+"is Running"+i);
i++;}}//2、设置公开的方法停止线程publicvoidstop(){this.flag=false;}publicstaticvoidmain(String[] args){ThreadStop threadStop =newThreadStop();newThread(threadStop).start();for(int i =0; i <1000; i++){System.out.println("mainThread is Running"+i);if(i==900){
threadStop.stop();System.out.println("is stopped");}}}
线程休眠
sleep(时间):指定当前线程阻塞的毫秒数
sleep存在异常InterruptedException
sleep时间到达后线程进入就绪状态
sleep可以模拟网络延时,倒计时等
每一个对象都有一把锁,sleep不会释放锁
int i=10;while(i>0){System.out.println(newSimpleDateFormat("yy-mmmm-dd hh:mm:ss").format(date));Thread.sleep(1000);
date=newDate(System.currentTimeMillis());
i--;}
publicclassThreadJoin{publicstaticvoidmain(String[] args)throwsInterruptedException{TestJoin testJoin=newTestJoin();Thread thread=newThread(testJoin);
thread.start();for(int i =0; i <50; i++){if(i==30){
thread.join();//main线程阻塞,等thread线程执行结束后main继续用执行}System.out.println("main。。。。。。"+i);}}}classTestJoinimplementsRunnable{@Overridepublicvoidrun(){for(int i =0; i <200; i++){System.out.println("join...."+i);}}}
线程状态
publicstaticvoidmain(String[] args)throwsInterruptedException{Thread thread=newThread(()->{for(int i =0; i <5; i++){try{Thread.sleep(1000);}catch(InterruptedException e){
e.printStackTrace();}}System.out.println("*********");});//观察状态System.out.println(thread.getState());//NEW
thread.start();System.out.println(thread.getState());//RUNNABLEwhile(thread.getState()!=Thread.State.TERMINATED){//只要线程不终止,就一直输出状态Thread.sleep(1000);System.out.println(thread.getState());}}