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();
        }
    }
  • 相关阅读:
    052-141
    052-140
    052-139
    052-138
    需要做笔记的页面
    日期总是显示1900/01/01 0:00:00
    延迟加载的树控件
    (简单)关于summary的注释
    江南检测
    fineui动态添加用户控件
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/12283604.html
Copyright © 2011-2022 走看看