synchronized、volatile区别、synchronized锁粒度、模拟死锁场景、原子性与可见性



/** * 使用synchronized实现一个简单的死锁 * @author RJH * @date 2017年11月23日 下午8:24:13 */ public class SynchronizedDeadLock { public static void main(String[] args) { //定义2个锁对象 final Object o1 = new Object(); final Object o2 = new Object(); Thread t1 = new Thread(new Runnable() { @Override public void run() { synchronized (o1) {//获取o1的锁 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (o2) {//获取o2的锁 } } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { synchronized (o2) {//获取o2的锁 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (o1) {//获取o1的锁 } } } }); //启动 t1.start(); t2.start(); } }




浙公网安备 33010602011771号