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

  • 相关阅读:
    根据经纬度获取距离
    获取本浏览器经纬度坐标
    仿造mongodb的存储方式存一些假数据
    ty修饰符 public private static
    ty 枚举类型
    限制字符串的选择
    typeScript类型别名
    ty 函数的讲解
    ty数组的讲解
    接口的讲解
  • 原文地址:https://www.cnblogs.com/spec-dog/p/3791043.html
Copyright © 2011-2022 走看看