ReadWriteLock:读写锁

一、

      /*
       * 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();
	            }
            }
        }
posted @ 2020-11-29 03:33  jock_javaEE  阅读(71)  评论(0编辑  收藏  举报