`
Luob.
  • 浏览: 1588626 次
  • 来自: 上海
社区版块
存档分类
最新评论

java 读写锁

    博客分类:
  • Java
阅读更多

import java.util.Random;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

/**
 * 读写锁 ,  读写 互斥 ,写写互斥  ,对于读 比 写频繁的时候 ,优势比较明显
 */
public class ReadWriteLockTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		final Queue q=new Queue();
		for (int i = 0; i < 3; i++) {
			new Thread(new Runnable(){
				@Override
				public void run() {
					while(true){
						q.get();
					}
				}
				
			}).start();
			
			new Thread(new Runnable(){
				@Override
				public void run() {
					while(true){
						q.put(new Random().nextInt());
					}
				}
			}).start();
		}
		
	}

}

class Queue{
	private Object data=null;  //共享数据,只能有一个线程能写该数据,但是可以有多个线程同时读该数据.
	ReadWriteLock rwl=new ReentrantReadWriteLock();
	public void get(){
		rwl.readLock().lock();
		System.out.println(Thread.currentThread().getName()+" be ready to read data!");
		try {
			Thread.sleep((long)Math.random()*1000);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println(Thread.currentThread().getName()+" have read data"+data);
		rwl.readLock().unlock();
	}
	
	
	public void put(Object data){
		rwl.writeLock().lock();
		System.out.println(Thread.currentThread().getName()+" be ready to write data!");
		try {
			Thread.sleep((long)Math.random()*1000);
		} catch (Exception e) {
			e.printStackTrace();
		}
		this.data=data;
		System.out.println(Thread.currentThread().getName()+" have write data:"+data);
		rwl.writeLock().unlock();
	}
	
}
分享到:
评论

相关推荐

    java 读写锁代码

    下面我们将详细探讨Java读写锁的概念、实现原理以及如何在实际代码中应用。 1. **读写锁概念**: - 读写锁分为读锁(共享锁)和写锁(独占锁)。读锁允许多个线程同时读取数据,而写锁只允许一个线程进行写操作。 ...

    Java 读写锁实现原理浅析

    "Java 读写锁实现原理浅析" Java 读写锁实现原理浅析是 Java 并发编程中一个非常重要的主题。在多线程编程中,读写锁是解决读写并发问题的常用机制。本文主要介绍了 Java 读写锁实现原理浅析,包括读写锁的定义、...

    java读写锁的实现原理

    本ppt介绍了排它锁等,源码深度理解读写锁,希望对大家有帮助!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    关于读写锁算法的Java实现及思考

    关于读写锁算法的Java实现及思考,是一个深入探讨了多线程环境下资源访问控制机制的主题。在现代软件开发中,尤其是并发编程领域,读写锁(ReadWriteLock)是一种非常重要的同步工具,它允许多个线程同时进行读操作...

    Java编程读写锁详解

    Java编程读写锁详解 Java编程读写锁是Java并发编程中的一种重要机制,用于解决多线程访问同一个资源时的安全问题。在Java中,读写锁是通过ReadWriteLock接口实现的,该接口提供了readLock和writeLock两种锁的操作...

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

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

    举例说明Java多线程编程中读写锁的使用

    Java多线程编程中,读写锁是一种优化并发访问共享资源的有效工具,它允许多个线程同时读取,但只允许一个线程写入。Java的`java.util.concurrent.locks.ReentrantReadWriteLock`类提供了可重入的读写锁功能。下面...

    java多线程-读写锁原理

    在Java多线程编程中,读写锁是一种高级的同步机制,它允许多个线程同时读取共享资源,但只允许一个线程写入。这种锁的引入提高了并发性能,特别是在读操作远多于写操作的场景下。Java 5开始,`java.util.concurrent....

    Java多线程编程之读写锁ReadWriteLock用法实例

    Java的多线程编程中,读写锁(ReadWriteLock)是一种高效的并发控制机制,它将锁的权限进行了区分,允许多个线程同时读取资源,但仅允许一个线程进行写入操作。这种设计模式提高了数据共享的效率,因为读操作通常...

    C#解决SQlite并发异常问题的方法(使用读写锁)

    本文实例讲述了C#解决SQlite并发异常问题的方法。分享给大家供大家参考,...作者利用读写锁(ReaderWriterLock),达到了多线程安全访问的目标。 using System; using System.Collections.Generic; using System.Text;

    Java readwritereentrantlock读写锁源码分析

    Java readwritereentrantlock读写锁源码分析

    读写锁_读写锁_

    在Java中,`java.util.concurrent.locks.ReentrantReadWriteLock`是标准的读写锁实现。这个类提供了可重入的特性,意味着一个线程在获得读锁或写锁后,可以再次请求相同的锁而不会被阻塞。这在处理递归调用时特别...

    Java的两种读写锁介绍

    在Java并发编程中,读写锁是用于优化多线程访问共享资源的一种机制,它可以提高对数据的并发访问效率。本文将深入探讨Java中的两种读写锁:ReentrantReadWriteLock和StampedLock,并分析它们的工作原理、特点以及...

    各种锁汇总,乐观锁、悲观锁、分布式锁、可重入锁、互斥锁、读写锁、分段锁、类锁、行级锁等

    本文将深入探讨标题和描述中提及的各种锁,包括乐观锁、悲观锁、分布式锁、可重入锁、互斥锁、读写锁、分段锁、类锁以及行级锁。 1. **乐观锁**:乐观锁假设多线程环境中的冲突较少,所以在读取数据时不加锁,只有...

    08、读写锁ReentrantReadWriteLock&StampLock详解-ev

    读写锁ReentrantReadWriteLock&StampLock详解_e读写锁ReentrantReadWriteLock&StampLock详解_e读写锁ReentrantReadWriteLock&StampLock详解_e读写锁ReentrantReadWriteLock&StampLock详解_e读写锁...

    彻底理解Java中的各种锁.pdf

    本文将详细介绍Java中包括乐观锁、悲观锁、自旋锁、可重入锁、读写锁等多种锁机制的概念、特点、应用场景及其优化技术。 1. 乐观锁与悲观锁 乐观锁与悲观锁反映了对数据并发访问策略的不同预期。乐观锁假设数据通常...

    多线程(22)读写锁分离模式1

    Java中提供了`java.util.concurrent.locks.ReadWriteLock`接口来支持这种模式,但在本案例中,我们将模拟实现一个读写锁来理解其基本原理。 1. **读写锁接口定义**: - `Lock`接口:这是基础的锁接口,提供了获取...

    Java并发编程之重入锁与读写锁

    Java并发编程之重入锁与读写锁 在 Java 并发编程中,重入锁和读写锁是两个非常重要的概念。重入锁是指支持重进入的锁,也就是说,一个线程可以多次获取同一个锁,而不会被阻塞。读写锁则是维护了一对相关的锁,一...

    Java锁的种类以及区别

    - `ReadWriteLock`接口定义了读写锁的行为,其具体实现类如`ReentrantReadWriteLock`。 ### 总结 Java中的锁机制对于保证多线程环境下的数据一致性至关重要。通过了解不同类型的锁及其特性,开发者可以根据实际...

    java-syn.zip_Java syn_Java syn锁_java同步锁syn_java锁 syn_syn同步事务锁

    - **读写锁**:`ReentrantReadWriteLock`允许多个读取者同时访问,但写入者具有独占权。 - **条件变量**:如`Lock`接口中的`Condition`,提供与`synchronized`中的`wait()`和`notify()`类似的功能,但更加灵活。 ...

Global site tag (gtag.js) - Google Analytics