• sleep和wait的区别


    /**
     * Sleep、WaitDemo
     *
     * @author suntao
     * @history 2020-02-11 14:30 suntao 新建
     * @since JDK1.8
     */
    public class SleepWaitDemo {
        /**
         * sleep和wait的区别
         * 1、sleep是Thread的方法,wait是Object类中的防范
         * 2、sleep在任何地方都可以调用,wait只有在sychronized方法或sychronized块中进行使用;
         * 3、Thread.sleep只会让出cpu,不会导致对象锁的行为的改变;
         *    Object.wait不仅可以让出cpu,也会释放锁
         * @param args
         */
        public static void main(String[] args) {
            Object lock = new Object();
    
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("Thread A wait get lock.");
                    synchronized (lock){
                        System.out.println("Thread A get lock.");
                        try {
                            Thread.sleep(20);  // 休眠20ms,模拟业务逻辑处理
                            System.out.println("Thread A do wait method.释放对象锁");
                            lock.wait(1000);     // 对象锁等待,释放对象锁
                            System.out.println("Thread A is done.");
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }).start();
            try {
                // 确保Thread A 先执行,占用对象锁,以验证lock.wait可以释放对象锁
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("Thread B wait get lock.");
                    synchronized (lock){
                        System.out.println("Thread B get lock.");
                        try {
                            Thread.sleep(10);  // 休眠10ms,模拟业务逻辑处理
                            System.out.println("Thread B is done.");
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }).start();
    
        }
    }
  • 相关阅读:
    Codeforces Round #627 (Div. 3) 总结
    [IOI1994] 时钟
    收集一些优秀的甲方安全开源项目
    python基础——对时间进行加减
    JSFinder:一个在js文件中提取URL和子域名的脚本
    python对齐输出
    python使用smtplib发送邮件
    任务2:扫描渗透测试(50分)[2019年信息安全管理与评估赛题答案-01]
    记一次Xmrig挖矿木马排查过程
    Bypass xss过滤的测试方法
  • 原文地址:https://www.cnblogs.com/xiaotao726/p/12295085.html
Copyright © 2020-2023  润新知