Obj
package com.james.thread.sync; public class SyncObject { byte[] lock1 = new byte[0]; byte[] lock2 = new byte[0]; int i = 1; public int minus() { try { synchronized (lock1) { System.out.println("minus in"); Thread.currentThread().sleep(300); i--; System.out.println("minus " + i); } } catch (InterruptedException e) { e.printStackTrace(); } return i; } public int add() { synchronized (lock2) { try { System.out.println("add in"); Thread.currentThread().sleep(5); i++; System.out.println("add " + i); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return i; } } public synchronized int minus2() { i--; System.out.println("minus "+ i); return i; } public synchronized int add2() { i++; System.out.println("add "+ i); return i; } }
Test
package com.james.thread.sync; public class Test { public static void main(String[] args) throws InterruptedException { SyncObject obj = new SyncObject (); Thread t =null; for(int i =1;i<3;i++){ t = new Thread(new TestThread (i,obj)); t.start(); } // Thread.currentThread().sleep(500); // System.out.println(obj.i); } static class TestThread implements Runnable { private int flag = 100; private SyncObject obj; public TestThread(int flag,SyncObject obj){ this.flag = flag; this.obj = obj; } public void run (){ if(flag %2 == 0){ obj.add(); }else{ obj.minus(); } } } }
输出
minus in add in add 2 minus 1
说明 synchronized块锁住不同对象的时候,同步块里是不会阻塞的。
相关推荐
java锁机制Synchronized java锁机制Synchronized java锁机制Synchronized java锁机制Synchronized
主要介绍了解析Java编程之Synchronized锁住的对象,具有一定参考价值,需要的朋友可以了解下。
基于Synchronized加锁的四个demo,主要反映类锁、对象锁、方法锁的使用方法。 并测试不同类型锁之间的有效关系。
synchronized关键字”锁”的实现本质 synchronized关键字实现的锁是依赖于JVM的,...上面这段代码,synchronized锁的其实是 o 这个对象,不是{}里面的代码块,synchronized (o)加锁的过程可以理解为,通过改变o这个对
主要介绍了Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别,希望对大家有所帮助,一起跟随小编过来看看吧
主要介绍了Java并发 synchronized锁住的内容解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在Java中,synchronized关键字是用来控制线程同步的,是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。Synchronized既可以对代码块使用,也可以加在整个方法上。 关键是,不要认为给方法或者...
java高并发开发必须要会的知识,锁知识,关键字 Synchronized_锁升级知识点总结,面试常用
一个多线程访问的同一个资源,java synchronized互斥锁的用法,android和此用法一致。
java锁机制Synchronized.pdf
Synchronized锁在Spring事务管理下,导致线程不安全。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
基于Java synchronized同步锁实现线程交互.pdf
声明周期,旦置为nil之后就法做代码同步了。SyncData* data = id2data(obj, RELEASE);}}// @synchronized
一种显式定义同步锁对象来实现锁,提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应先获得Lock锁。 # synchronized锁与lock锁的对比 Lock是显式锁,需要手动的开启和...
测试java中synchronized到底锁住了什么,完整demo
12丨多线程之锁优化(上):深入了解Synchronized同步锁的优化方法.html
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
通常我们说synchronized的对象锁,就是这里Tag=10时的monitor对象,这里的Monitor address就是这个monitor对象(就是重量锁)的地址。 当多个线程同时请求synchronized方法或块时,monitor会设置几个虚拟逻辑数据...
synchronized同步锁(悲观锁)2.1 synchronized 作用范围2.2 synchronized 核心组件2.3 synchronized 实现 1. Java锁的种类 1.1 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低。 每次去拿...