zoukankan      html  css  js  c++  java
  • GUC-9 ReadWriteLock : 读写锁

    import java.util.concurrent.locks.ReadWriteLock;
    import java.util.concurrent.locks.ReentrantReadWriteLock;
    
    /*
     * 1. ReadWriteLock : 读写锁
     * 
     * 写写/读写 需要“互斥”
     * 读读 不需要互斥
     * 
     */
    public class TestReadWriteLock {
    
        public static void main(String[] args) {
            ReadWriteLockDemo rw = new ReadWriteLockDemo();
            
            new Thread(new Runnable() {
                
                @Override
                public void run() {
                    rw.set((int)(Math.random() * 101));
                }
            }, "Write:").start();
            
            
            for (int i = 0; i < 100; i++) {
                new Thread(new Runnable() {
                    
                    @Override
                    public void run() {
                        rw.get();
                    }
                }).start();
            }
        }
        
    }
    
    class ReadWriteLockDemo{
        
        private int number = 0;
        
        private ReadWriteLock lock = new ReentrantReadWriteLock();
        
        //
        public void get(){
            lock.readLock().lock(); //上锁
            
            try{
                System.out.println(Thread.currentThread().getName() + " : " + number);
            }finally{
                lock.readLock().unlock(); //释放锁
            }
        }
        
        //
        public void set(int number){
            lock.writeLock().lock();
            
            try{
                System.out.println(Thread.currentThread().getName());
                this.number = number;
            }finally{
                lock.writeLock().unlock();
            }
        }
    }
  • 相关阅读:
    发布SpringBoot项目到Docker容器
    Docker网络
    Docker镜像发布到阿里云
    Docker制作Tomcat镜像
    DockerFile指令
    Docker命令
    kafka安装与使用
    刷题第2天
    刷题第1天
    UVA 11107 Life Forms
  • 原文地址:https://www.cnblogs.com/surge/p/10476271.html
Copyright © 2011-2022 走看看