public class Gate { private int counter = 0; private String name = "Nobody"; private String address = "Nowhere"; private final Mutex mutex = new Mutex(); public void pass(String name, String address) { // 并非synchronized mutex.lock(); try { this.counter++; this.name = name; this.address = address; check(); } finally { mutex.unlock(); } } public String toString() { // 并非synchronized String s = null; mutex.lock(); try { s = "No." + counter + ": " + name + ", " + address; } finally { mutex.unlock(); } return s; } private void check() { if (name.charAt(0) != address.charAt(0)) { System.out.println("***** BROKEN ***** " + toString()); } } }
public final class Mutex { private boolean basy = false; public synchronized void lock(){ while (basy) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } basy = true; } public synchronized void unlock(){ basy = false; notifyAll(); } }
相关推荐
Synchronized锁在Spring事务管理下,导致线程不安全。
java synchronized的一些小实验,对帮助理解synchronized的使用有一定的帮助。
java中synchronized的使用,java中的锁锁的到底是什么?是括号里的代码块吗?肯定不是的;
多线程入门,多线程基础知识,描述了Synchronized的线程互斥原理,和Single Threaded Execution模式,符合基础入门的用户可以好好学习,加深理解
使用synchronized实现多线程同步.pdf
[JAVA][synchronized的使用]
使用java模拟synchronzed的过程,模拟从无锁->偏向锁->轻量级锁->重量级锁->挂起->唤醒->继续抢锁,再模拟了各阶段的锁释放。(此代码不能运行,因为很多c++中的机制在java中不能实现)此代码仅用于学习synchronized的...
线程安全,使用synchronized关键字
java锁机制Synchronized java锁机制Synchronized java锁机制Synchronized java锁机制Synchronized
java中synchronized用法
使用synchronized实现多线程同步[借鉴].pdf
你还在用synchronized?线程安全相关知识深入剖析
synchronized下的方法控制多线程程序中的线程同步非常方便,这里就来看一下Java使用synchronized修饰方法来同步线程的实例演示,需要的朋友可以参考下
java多线程中synchronized关键字的用法 解压密码 www.jiangyea.com
synchronized是很重要的,但是不少人不是很明白synchronized的用法,这里有详细的doc文档给大家参考
java里面synchronized用法
Synchronized关键字的用法
java多线程编程核心技术synchronized实例大全,同步方法,同步语句块,类锁,对象锁全都用代码来展现出来
synchronized的几种示例研究,方法加锁,代码块加锁(this和对象)以及静态方法加锁的示例和效果。基本上包含了synchronized的几种常用的方式。
主要介绍了Java中使用synchronized关键字实现简单同步操作示例,本文起讲解了synchronized修饰函数、synchronized修饰代码块、synchronized修饰静态方法等内容,需要的朋友可以参考下