zoukankan      html  css  js  c++  java
  • JAVA线程sleep和wait方法区别 代码

    package test;
    
    import java.util.Date;
    import java.util.Random;
    
    public class test {
    
        public static void main(String[] args) {
            TicketThread thread = new TicketThread();
    
            for (int i = 0; i < 10; i++) {
                new Thread(thread, "client-" + (i + 1)).start();
            }
        }
    
        public static class TicketThread implements Runnable {
            private int stock = 10;
            private Object lock = new Object();
    
            public void run() {
                while (stock > 0) {
                    synchronized (lock) {
                        if (stock > 0) {
                            try {
                                Integer processingTime = new Random().nextInt(1000);
                                System.out.println(Thread.currentThread().getName() + ":订单处理中..."+ stock + new Date());
                                Thread.sleep(processingTime);
                                System.out.println(Thread.currentThread().getName() + ":交易成功,库存余量:" + --stock + new Date());
                                lock.wait(12000);   //释放锁,其余的线程不等待12秒,直接去打印
                                //Thread.sleep(12000);  锁不放,其余的线程不能打印,等待12秒出一个打印
                                System.out.println(Thread.currentThread().getName() + ":睡眠结束...:" + stock + new Date());
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
        }
    
    }
  • 相关阅读:
    第三方登录原理
    django-rest-framework之 json web token方式完成用户认证
    HTTP Basic Authentication认证
    python 创建虚拟环境
    scrapy pipeline
    beautifulsoup 安装
    scrapy 安装
    Jmeter 安装
    css中的行高line-height
    html块级元素与行内元素
  • 原文地址:https://www.cnblogs.com/yaowen/p/8610708.html
Copyright © 2011-2022 走看看