zoukankan      html  css  js  c++  java
  • [JavaEE]如何唤醒Sleep中的线程

    主线程调用子线程的interrupt()方法,导致子线程抛出InterruptedException, 在子线程中catch这个Exception,不做任何事即可从Sleep状态唤醒线程,继续执行。 如下测试。

    public class SleepThreadTest {

        public static void main(String[] args){
            Thread myThread = new Thread(new TestThread(1));
            myThread.start();
            try {
                Thread.sleep(3000);
                myThread.interrupt();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            
            
            
        }
        
        private static class TestThread implements Runnable{
            private int i;
            public TestThread(int i){
                this.i = i;
            }

            @Override
            public void run() {
                while(i<10){
                    System.out.println(i + "   time:" + new Date());
                    i++;
                    if(i==4){
                        try {
                            Thread.sleep(10000);
                        } catch (InterruptedException e1) {
                            System.out.println("interrupt myThread...");
                        }

                    }
                }
            }
            
        }
    }

    result:

    1   time:Mon Jun 16 15:19:56 CST 2014
    2   time:Mon Jun 16 15:19:56 CST 2014
    3   time:Mon Jun 16 15:19:56 CST 2014
    interrupt myThread...
    4   time:Mon Jun 16 15:19:59 CST 2014
    5   time:Mon Jun 16 15:19:59 CST 2014
    6   time:Mon Jun 16 15:19:59 CST 2014
    7   time:Mon Jun 16 15:19:59 CST 2014
    8   time:Mon Jun 16 15:19:59 CST 2014
    9   time:Mon Jun 16 15:19:59 CST 2014

  • 相关阅读:
    Foj1675数论
    JSTL与EL之间的千丝万缕
    2013多校联合2 I Warm up 2(hdu 4619)
    ios视图切换之push与present混用
    Ruby设计模式透析之 —— 适配器(Adapter)
    晓说智能指针shared_ptr为何可以实现跨模块分配和释放内存
    CSS的力量
    MySQL-select 1;
    MySQL数据库-语言简介
    Eclipse开发工具提交代码
  • 原文地址:https://www.cnblogs.com/spec-dog/p/3791043.html
Copyright © 2011-2022 走看看