- /*
- interrupt
- 这是一个强制清除冻结状态,让线程重新回到运行状态
- */
- class StopThread implements Runnable
- {
- boolean flag=true;
-
- public synchronized void run()
- {
- while(flag)
- {
- try
- {
- this.wait();
- }
- catch(InterruptedException e)
- {
- System.out.println(Thread.currentThread().getName()+"清除了冻结状态");
- flag=false;
- }
- System.out.println(Thread.currentThread().getName()+"我来啦");
- }
- System.out.println(Thread.currentThread().getName()+"哈哈,我在外面");
- }
- }
- class StopDemo
- {
- public static void main(String[] args)
- {
- StopThread st=new StopThread();
- Thread t1=new Thread(st);
- Thread t2=new Thread(st);
- t1.start();
- t2.start();
- int x=1;
- while(true)
- {
- if(x++==60)
- {
- //注意问题在这里:这里t1调用interrupt方法,它会抛出异常,那么我们就要不抛要不就try,我们是做了try方法,但是是在上面的wait方法上做了处理,
- 在这句代码并没有做处理,为什么呢?谢谢各位兄弟
- t1.interrupt();
- t2.interrupt();
-
- break;
- }
- System.out.println(Thread.currentThread().getName()+x);
- }
- System.out.println(Thread.currentThread().getName()+"哈哈我是主线程");
- }
- }
复制代码 |