zoukankan      html  css  js  c++  java
  • java线程同步--lock锁(JDK 5 新增)

    需手动加锁和释放.

    package com.LearnJava.Thread;
    
    import java.util.concurrent.locks.ReentrantLock;
    
    /*
        同步代码块
        synchronized(同步监视器){
            //需要同步的代码
        }
        同步监视器:俗称 锁,可以是任何实例化的类.但是需要共用同一个实例.
     */
    class WindowSell implements Runnable{
        ReentrantLock lock = new ReentrantLock();
        private int ticket = 100;
        @Override
        public void run() {
            while (true) {
                try {
    
                    lock.lock();
                    if (ticket > 0) {
                        System.out.println(Thread.currentThread().getName() + "sell " + ticket--);
                        Thread.sleep(100);
    
                    }else{
                        break;
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    lock.unlock();
                }
            }
        }
    
    }
    public class ThreadTestTicket {
        public static void main(String[] args) {
            WindowSell win = new WindowSell();
            Thread t1 = new Thread(win);
            t1.setName("1号窗口");
            Thread t2 = new Thread(win);
            t2.setName("2号窗口");
            Thread t3 = new Thread(win);
            t3.setName("3号窗口");
    
            t1.start();
            t2.start();
            t3.start();
        }
    }
  • 相关阅读:
    侧边框伸缩
    百度登录界面
    PHP 判断是否包含在某个字符串中
    三个等于号===和两个等于号==的区别
    PHP的魔法方法
    Apache和PHP环境配置
    群同构与线性空间同构的区别
    SciPy0.11.0(or higher)安装
    博客搬家
    简单的组件传值
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/12283604.html
Copyright © 2011-2022 走看看