`

读写锁列子

 
阅读更多
package com.bjsxt.height.lock021;

import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock;
import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;

/**
 * 口诀:读读共享,读写,写写互斥
 *
 */
public class UseReentrantReadWriteLock {

	private ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();
	private ReadLock readLock = rwLock.readLock();
	private WriteLock writeLock = rwLock.writeLock();
	
	public void read(){
		try {
			readLock.lock();
			System.out.println("当前线程:" + Thread.currentThread().getName() + "进入...");
			Thread.sleep(3000);
			System.out.println("当前线程:" + Thread.currentThread().getName() + "退出...");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			readLock.unlock();
		}
	}
	
	public void write(){
		try {
			writeLock.lock();
			System.out.println("当前线程:" + Thread.currentThread().getName() + "进入...");
			Thread.sleep(3000);
			System.out.println("当前线程:" + Thread.currentThread().getName() + "退出...");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			writeLock.unlock();
		}
	}
	
	public static void main(String[] args) {
		
		final UseReentrantReadWriteLock urrw = new UseReentrantReadWriteLock();
		
		Thread t1 = new Thread(new Runnable() {
			@Override
			public void run() {
				urrw.read();
			}
		}, "t1");
		Thread t2 = new Thread(new Runnable() {
			@Override
			public void run() {
				urrw.read();
			}
		}, "t2");
		Thread t3 = new Thread(new Runnable() {
			@Override
			public void run() {
				urrw.write();
			}
		}, "t3");
		Thread t4 = new Thread(new Runnable() {
			@Override
			public void run() {
				urrw.write();
			}
		}, "t4");		
		
		t1.start();
		t2.start();
		//t3.start(); // W
		//t1.start(); // R 
	
		
		//t3.start();
	//	t4.start();
		
		
		
		
		
		
		
		
	}
}

 

分享到:
评论

相关推荐

    WINDOWS读写锁实现

    在Windows操作系统中,读写锁(Read-Write Lock)是一种多线程同步原语,它允许多个线程同时读取共享资源,但在写入时仅允许一个线程访问。这提高了并发性能,尤其是在读操作远多于写操作的场景下。本篇文章将深入...

    windows和linux读写锁C++实现

    在多线程编程中,读写锁是一种非常重要的同步机制,它允许多个读线程同时访问共享资源,但只允许一个写线程独占资源,从而提高了并发性能。本话题将详细探讨在Windows和Linux环境下,如何使用C++来实现读写锁。 ...

    windows 读写锁 (基于关键区的读写锁类 及自动锁)

    读写锁的核心思想是提供两种类型的锁:读锁和写锁。读锁允许多个线程同时进行读取操作,因为读操作通常是非破坏性的;而写锁则独占资源,确保任何时候只有一个线程能进行写操作。这种设计提高了系统的并发性能。 在...

    java 读写锁代码

    Java 读写锁是Java并发编程中的一种重要机制,它为多线程环境下的数据访问提供了更为精细的控制。在Java的`java.util.concurrent.locks`包中,`ReentrantReadWriteLock`类实现了读写锁的功能。这个锁允许多个读取者...

    易语言线程安全之原子锁与读写锁

    读写锁分为读锁和写锁,读锁可由多个线程同时持有,而写锁是独占的,一旦有线程持有了写锁,其他所有线程都无法再获取读锁或写锁。 读写锁的工作原理如下: 1. 当没有线程持有锁时,任何线程都可以获得写锁。 2. 当...

    linux写优先的读写锁设计

    linux写优先的读写锁设计 在 Linux 操作系统中,有两种基本机制来实现数据互斥,即信号量(semaphore)和自旋锁(spinlock)。本文将讨论一种特殊的自旋锁变种,即读写锁(read-write lock),它允许多个进程同时...

    同步 读写锁 readwriteLock

    ### 同步机制中的读写锁 (Read-Write Lock) #### 概述 在多线程编程中,读写锁是一种特殊的同步机制,用于解决读者写者问题。它允许多个线程同时读取共享资源,但只允许一个线程写入资源。这种机制通过将读操作和...

    易语言读写锁1.2模块源码

    易语言读写锁1.2模块源码例程程序调用API函数实现读写锁功能的操作。点评:读写锁实际是一种特殊的锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则对共享资源进行写操作。这种锁相...

    读写锁实现例子

    在这个例子中,我们讨论了如何使用读写锁(Read-Write Lock)来实现多线程环境中的并发访问控制。读写锁是一种高级的同步机制,它允许多个线程同时读取共享资源,但只允许一个线程进行写操作。这在数据读取远比写入...

    C#使用读写锁三行代码简单解决多线程并发的问题

    为了解决这个问题,我们可以利用C#中的读写锁(ReaderWriterLockSlim)来实现线程同步。本文通过三行代码展示了如何使用读写锁解决多线程并发写入文件的冲突。 读写锁的核心在于,它允许多个线程同时读取资源,但只...

    操作系统实验--读写锁

    操作系统中的读写锁是一种多线程同步机制,用于在并发环境中高效地管理共享资源的访问。在计算机系统中,特别是当多个线程需要同时访问同一数据时,读写锁能够提供一种策略,允许多个线程同时读取资源,但只允许一个...

    linux下实现高性能读写锁(read/write lock)

    在Linux系统中,读写锁(Read/Write Locks,简称rwlocks)是一种多线程同步机制,它允许多个线程同时进行读操作,但只允许一个线程执行写操作。这种锁的设计目的是提高并发性能,特别是当读操作远多于写操作时。在...

    基于zookeeper实现的分布式读写锁

    本文将深入探讨基于Zookeeper实现的分布式读写锁,并利用Zkclient客户端进行操作。Zookeeper是一个分布式服务协调框架,它提供了一种简单且高效的方式来实现分布式锁。 **一、Zookeeper简介** Zookeeper是由Apache...

    读写锁实现代码

    一般的读写锁代码,都是使用了临界体作为基本锁,这样就出现了在一个线程里获取临界体,但是却在另一个线程里释放临界体的问题。临界体是线程相关锁,必须做到获取和释放都在同一个线程。这个读写锁使用临界体和事件...

    易语言读写锁模块

    易语言读写锁模块源码,读写锁模块,进入,退出,读锁,写锁,解锁,InitializeCriticalSection,DeleteCriticalSection,EnterCriticalSection,LeaveCriticalSection

    linux 读写锁应用实例

    inux 读写锁应用实例 /*使用读写锁实现四个线程读写一段程序的实例,共创建了四个新的线程,其中两个线程用来读取数据,另外两个线程用来写入数据。在任意时刻,如果有一个线程在写数据,将阻塞所有其他线程的任何...

    写优先防止读线程饿死的读写锁

    读写锁(Read-Write Lock),也称为共享独占锁,是多线程编程中一种高效的数据同步机制。它允许多个读线程同时访问数据,但只允许一个写线程独占资源,确保数据的一致性。在某些情况下,这种锁能够显著提高并发性能...

    读写锁源代码(C#编写)

    读写锁是多线程编程中的一个重要概念,它在C#中被广泛应用于提高并发访问数据的效率。本文将深入探讨C#中的读写锁及其使用,帮助你理解和掌握这一关键技能。 首先,读写锁提供了对共享资源的细粒度控制。在C#中,`...

    简单读写锁实例代码

    在C++编程中,读写锁(Read-Write Lock)是一种多线程同步机制,它允许多个线程同时读取共享资源,但只允许一个线程写入。这种锁机制提高了对共享数据的并发访问效率,是并发编程中常用的一种工具。本实例将通过代码...

    读写锁_读写锁_

    读写锁是多线程编程中的一个重要概念,用于提高并发访问数据时的效率。在并发环境中,如果多个线程同时读取数据,通常不会产生冲突,而写入数据时则可能引发问题。读写锁正是为了解决这个问题,它允许多个读取线程...

Global site tag (gtag.js) - Google Analytics