`

java lock的机制

    博客分类:
  • java
阅读更多

Java.util.cocurrent.lock

         是一个能够更好的使用锁机制的新框架。

         主要技术要点:

Wait           notify            notifyAll

         condition lock ReadWriteLock来实现锁机制

         Lock.cock(): 获取锁

 

class BoundedBuffer {
   final Lock lock = new ReentrantLock();

   final Condition notFull  = lock.newCondition(); 

   final Condition notEmpty = lock.newCondition(); 

 

   final Object[] items = new Object[100];

   int putptr, takeptr, count;

 

   public void put(Object x) throws InterruptedException {

     lock.lock();

     try {

       while (count == items.length) 

         notFull.await();           à try 里面的要

       items[putptr] = x;                     活得lock后才能执行

       if (++putptr == items.length) putptr = 0;

       ++count;

       notEmpty.signal();

     } finally {

       lock.unlock();

     }

   }

 

   public Object take() throws InterruptedException {

     lock.lock();

     try {

       while (count == 0) 

         notEmpty.await();

       Object x = items[takeptr]; 

       if (++takeptr == items.length) takeptr = 0;

       --count;

       notFull.signal();

       return x;

     } finally {

       lock.unlock();

     }

   } 

 }

 

 

 

ReadWriteLock--------------:ReadWriteLock 维护了一对相关的,一个用于只读操作,另一个用于写入操作。只要没有 writer读取锁可以由多个 reader 线程同时保持。写入锁是独占的。

分享到:
评论

相关推荐

    生产者消费者Java—LOCK机制

    这个项目为学习和理解Java并发编程提供了很好的实践案例,尤其是关于Lock机制的应用。通过分析和运行此项目,开发者可以深入理解多线程环境下的数据同步和通信,这对于构建高并发的Java应用至关重要。

    Java锁机制Lock用法示例

    Lock机制是Java 1.5以后引入的显示锁机制,相比于传统的synchronized隐式锁机制,Lock机制提供了更灵活和高效的同步方式。 在Java中,Lock机制主要有三种实现方式: 1. 同步代码块 synchronized 隐式锁:使用...

    Java锁机制详解.pdf

    Java锁机制是Java多线程编程中的核心概念之一,其主要目的是确保在多线程环境下,多个线程能够安全地访问共享资源,避免数据不一致的问题。Java锁机制的发展历经了多个版本的改进,尤其是Java 5.0引入的显示锁...

    java的Lock锁原理详解.docx

    在Java中,有两种主要的锁机制:synchronized和Lock。它们都是用来实现线程同步,防止数据竞争,确保并发环境下的数据一致性。 首先,synchronized是Java的关键字,由JVM直接支持,其底层实现依赖于操作系统原语,...

    JavaLock与Condition的理解Reentran

    本文将深入探讨JavaLock中的ReentrantLock(可重入锁)以及与其紧密相关的Condition接口,帮助你理解它们的工作原理和应用场景。 **一、ReentrantLock可重入锁** ReentrantLock是Java.util.concurrent.locks包下的...

    java锁机制详解.pdf

    在Java中,主要的锁机制包括`synchronized`关键字和`Lock`接口(如`ReentrantLock`)。下面将详细讲解这两种锁机制及其应用。 1. `synchronized`关键字 `synchronized`用于标记方法或代码块,确保同一时间只有一个...

    Java 并行机制的核心

    Java作为一种广泛应用的编程语言,自诞生之初就内置了关键的并发概念,如线程(Thread)和锁(Lock)。随着多核处理器的普及以及对高性能计算的需求日益增长,Java在版本更新中不断引入新的并发工具和技术来提升...

    Java线程不安全分析,同步锁和Lock机制,哪个解决方案更好 (2).docx

    为了解决线程不安全的问题,Java提供了多种同步机制,包括同步锁和Lock机制。下面我们分别介绍这两种解决方案。 ##### 同步锁(Synchronized) 同步锁是一种基于关键字`synchronized`实现的锁机制,它可以在代码块...

    java的lock和synchronized的区别.docx

    Java 中的 Lock 和 Synchronized 的区别 Java 语言中有很多相似关键字或相似意义的字,...lock 提供了更加灵活和高效的锁机制,可以满足不同场景下的需求,而 synchronized 则是 Java 中的关键字,具有语言的内置性。

    Java lock同步锁使用实例解析

    Java lock同步锁是Java并发编程中的一种常见同步锁机制,主要用于解决多线程并发访问共享资源时的同步问题。在Java中,Lock是一个接口,而synchronized是Java中的关键字,两者都可以用于实现同步锁,但它们有着不同...

    同步机制(JAVA)

    - **Lock接口与ReentrantLock类**:`java.util.concurrent.locks`包提供了更灵活的锁机制,如`Lock`接口和`ReentrantLock`类,它们可以实现公平锁、非公平锁,以及读写锁等功能。 4. **死锁与活锁** - 死锁:两个...

    面向Java锁机制的字节码自动重构框架.zip

    显式锁是Java 5引入的java.util.concurrent.locks包中的Lock接口及其实现类,如ReentrantLock。与内置锁相比,显式锁提供了更多的控制选项,例如非公平锁、可中断锁、定时锁等。显式锁需要程序员手动获取和释放,这...

    Java并发机制的底层实现原理.pdf

    Java并发机制的底层实现原理涉及到多个方面,包括了本地内存与线程安全的问题、volatile关键字的使用、synchronized关键字的原理以及Java并发在处理器层面是如何实现的。通过这些机制,Java能够有效地管理多线程环境...

    java Lock接口详解及实例代码

    Java Lock接口是Java并发编程中一个重要的组成部分,它提供了一种更为灵活的锁机制,相比传统的`synchronized`关键字,Lock接口允许我们进行更细粒度的控制,包括可中断的锁等待、尝试获取锁以及定时等待等。...

    Java 等待唤醒机制

    Java等待唤醒机制是Java多线程编程中一个重要的概念,它涉及到线程间的协作与通信。在Java中,主要通过`Object`类提供的`wait()`、`notify()`和`notifyAll()`方法来实现这一机制。这些方法使得线程可以在特定条件下...

    Java线程不安全分析,同步锁和Lock机制,哪个解决方案更好.docx

    为了确保多线程环境下数据的一致性和准确性,Java提供了多种机制来实现线程安全,包括但不限于同步锁(`synchronized`关键字)和`Lock`接口。 ##### 1. 同步代码块 同步代码块是通过`synchronized`关键字来实现的...

    面向Java锁机制的字节码自动重构框架.pdf

    根据提供的文件内容,以下是关于“面向Java锁机制的字节码自动重构框架”的详细知识点解析: 1. Java锁机制 Java语言提供了多种锁机制,包括同步锁(synchronized),可重入锁(ReentrantLock)和读写锁(ReadWriteLock)...

Global site tag (gtag.js) - Google Analytics