ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); Lock readLock = readWriteLock.readLock(); Lock writeLock = readWriteLock.writeLock(); for (int i = 0; i < 5; i++) { new Thread(() -> { writeLock.lock(); try { System.out.println(Thread.currentThread().getName()+"t开始写数据"); try { TimeUnit.SECONDS.sleep(new Random().nextInt(5)); } catch(InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"t写完数据"); } finally { writeLock.unlock(); } }, String.valueOf(i)).start(); } for (int i = 0; i < 5; i++) { new Thread(() -> { readLock.lock(); try { System.out.println(Thread.currentThread().getName()+"t开始读数据"); try { TimeUnit.SECONDS.sleep(new Random().nextInt(5)); } catch(InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"t读完数据"); } finally { readLock.unlock(); } }, String.valueOf(i)).start(); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)