广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州分享Java显式锁实例_北大青鸟IT学校

作者:邓华发布时间:2021-05-12分类:Java技术浏览:693


导读:通过上一篇文章,大家应该知道Java显式锁是什么了吧!那么下面惠州北大青鸟老师给大家分享Java显式锁的实例,希望对大家学习有帮助。

通过上一篇文章,大家应该知道Java显式锁是什么了吧!那么下面惠州北大青鸟老师给大家分享Java显式锁的实例,希望对大家学习有帮助。

实例一

ReentrantReadWriteLock类是ReadWriteLock接口的实现。只有一个线程可以保持ReentrantReadWriteLock的写锁,而多个线程可以保持其读锁。

下面的代码演示了ReentrantReadWriteLock的用法。

import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantReadWriteLock;public class Main {  private int value;  private ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();  private Lock rLock = rwLock.readLock();  private Lock wLock = rwLock.writeLock();  public Main(int value) {
   this.value = value;
 }  public int getValue() {
   rLock.lock();    try {      return this.value;
   } finally {
     rLock.unlock();
   }
 }  public void setValue(int value) {
   wLock.lock();    try {
     this.value = value;
   } finally {
     wLock.unlock();
   }
 }
}

实例二

下面的代码模拟哲学家,假设ReentrantLock类的一个对象表示一个fork。

import java.util.concurrent.locks.Lock;class Philosopher {  private Lock leftFork;  private Lock rightFork;  private String name; // Philosopher"s name
 public Philosopher(Lock leftFork, Lock rightFork, String name) {
   this.leftFork = leftFork;
   this.rightFork = rightFork;
   this.name = name;
 }  public void think() {
   System.out.println(name + "  is thinking...");
 }  public void eat() {    if (leftFork.tryLock()) {      try {        if (rightFork.tryLock()) {          try {
           System.out.println(name + "  is eating...");
         } finally {
           rightFork.unlock();
         }
       }
     } finally {
       leftFork.unlock();
     }
   }
 }
}

点击咨询直接了解更多相关资料,我在惠州北大青鸟新方舟等你。

Java12.jpg

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表