synchronized同步对象锁
package com.system.util; import com.common.Constants;
import com.util.Cache; /**
* 创建同步对象锁
*
* @author jqlin
*
*/
public class SyncObject {
/**唯一对象*/
private Object obj; public SyncObject(Object obj) {
this.obj = obj;
} /**
* 获取同步对象锁
*
* @param cache 缓存对象
* @param preCacheKey 唯一标识缓存的ID
* @param obj 唯一对象
* @return
*/
public static synchronized SyncObject getSyncObject(Cache cache, String preCacheKey, Object obj) {
SyncObject sysObject = cache.get(preCacheKey + obj);
if (sysObject == null) {
sysObject = new SyncObject(obj);
cache.put(preCacheKey + obj, sysObject);
} return sysObject;
} public Object getObj() {
return obj;
} public void setObj(Object obj) {
this.obj = obj;
} public static void main(String[] args) {
Cache cache = null;
String userId = null; SyncObject syncOrder = SyncObject.getSyncObject(cache, Constants.DQ_REDEMP_CACHE, userId);
synchronized (syncOrder) {
//todo
}
}
}
synchronized同步对象锁的更多相关文章
- synchronized是对象锁还是全局锁
昆昆欧粑粑 2019-02-20 15:09:59 1148 收藏 1分类专栏: java学习 文章标签: synchronized 全局锁 对象锁 同步版权都可以锁!synchronized(thi ...
- Java锁Synchronized,对象锁和类锁举例
Java的锁分为对象锁和类锁. 1. 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内针对该对象的操作只能有一个线程得到执行.另一个线程必须 ...
- (转)Synchronized(对象锁)和Static Synchronized(类锁)的区别
场景:面试的时候经常用得到! 1 综述 Synchronized和Static Synchronized区别 一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念),一个是全 ...
- JAVA多线程之Synchronized关键字--对象锁的特点
一,介绍 本文介绍JAVA多线程中的synchronized关键字作为对象锁的一些知识点. 所谓对象锁,就是就是synchronized 给某个对象 加锁.关于 对象锁 可参考:这篇文章 二,分析 s ...
- synchronized的对象锁和类锁
概念 synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的. 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制, ...
- synchronized 同步对象概念
解决上述问题之前,先理解synchronized关键字的意义如下代码: Object someObject =new Object(); synchronized (someObject){ // ...
- 在jdk7下慎用String.intern()作为synchronized的对象锁
有一段这样的代码: for (int i = 0; i < 10000000; i++) { ("bluedavy" + i).intern(); if(i % 100 == ...
- 慎用String.intern()作为synchronized的对象锁
https://www.cnblogs.com/yhlx/p/3498387.html
- java的同步方法和同步代码块,对象锁,类锁区别
/** * @author admin * @date 2018/1/12 9:48 * 作用在同一个实例对象上讨论 * synchronized同步方法的测试 * 两个线程,一个线程调用synchr ...
随机推荐
- (一)常用的CSS命名规则
头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:left rig ...
- curl+openssl编译
curl不支持openssl的静态库,所以编译openssl的时候,应该加上shared 参数,记录一下我亲手编译的参数: ./configure --prefix=/usr/local/openss ...
- 15.Xcode8 升级遇到的问题
一:注释快捷键cmd+/不能用,解决方法: 1. Swift_3.0 没法快捷键(command+/)注释的原因:这个是因为苹果解决xcode ghost,把插件屏蔽了. 2. 解决办法: (1) 终 ...
- 实现十进制无符号整数m到十六进制数的转换功能
/*利用顺序栈结构,编写算法函数void Dto16(unsigned int m)实现十进制无符号整数m到十六进制数的转换功能.*//******************************** ...
- Linux 如何安装memcache?
原有memcache所在机器损坏,需要在新的Linux机器上安装memcache,具体步骤如下: 1.使用Linux机器的root权限登陆 2.安装libevent 下载地址:http://libev ...
- 【转】java架构师之路:JAVA程序员必看的15本书的电子版下载地址
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...
- AOP实现原理
Spring 为解耦而生,其中AOP(面向切面编程)是很浓重的一笔. 本文来探讨一下AOP实现的原理. 一. 概述 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负 ...
- 使用git svn clone迁移svn仓库
使用git svn clone迁移svn仓库 clone命令可以指定很多参数,主要用到这些,你也可以使用git svn help查看完整的参数列表. git svn clone https://172 ...
- Learning ROS for Robotics Programming - Second Edition(《学习ROS机器人编程-第二版》)
Learning ROS for Robotics Programming - Second Edition <学习ROS机器人编程-第二版> ----Your one-stop guid ...
- Python学习之路—Day1
第1章 Python语言简介 1.1 Python是什么 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn)是什么呢?简单的说,它是一种计算机编程语言及一组配套的软件工具和库. ...