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

  • 相关阅读:
    C#判断网络链接状态
    C# 创建临时文件(转帖)
    C# 很久以前几个常用类
    正则附表
    如何判断WebBrowser浏览器网页加载完成
    控件阴影
    C# 使用WM_COPYDATA传输数据(两个窗体间通信)
    C# 调用POST请求
    改变无边框窗体的尺寸大小和移动无边框窗体
    IT学习网站
  • 原文地址:https://www.cnblogs.com/spec-dog/p/3791043.html
Copyright © 2011-2022 走看看