静态方法加锁

public static synchronized List<SignatureVerification> getVerifyListInfo(byte[] b) {
		List<SignatureVerification> signatureVerifications = new ArrayList<SignatureVerification>();
		SignatureVerification sv = new SignatureVerification();
		byte[] cert = null;
		SPDocument doc = new SPDocument();
		cert = doc.VerifySignature(b);
		int i = doc.getVerifyResult();
		logger.info("VerifyService---getVerifyResult:"+i);
		if (i == 0) {
			sv.setModified(false);
		}
		if (i == 1) {
			sv.setModified(true);
		}
		if (i == 2 || i == 3) {
			sv.setModified(true);
		}
		if (cert != null) {
			sv.setX509Base64(com.itrus.util.Base64.encode(cert));
			signatureVerifications.add(sv);
		}
		return signatureVerifications;
	}

静态方法内调用的SO库,SO库里释放内存报错,所以加锁,多线程测试故障消除

时间: 2024-11-10 14:15:36

静态方法加锁的相关文章

静态方法加锁,和非静态方法加锁区别

今天看了到有意思的题:在静态方法上加锁 和 非静态方法加锁 有什么区别,从而再次引出锁机制的一些理解. 先看方法: // 这是一个很简单的类,里面共享静态变量 num,然后一个静态 和 非静态方法,都加上锁 // 我们假设有两个线程同时操作这两个方法,那么数据能互斥吗? Java代码   public class Walk { public static int num = 100; public static Walk walk = new Walk(); // 静态 public synch

synchronized锁普通方法和锁静态方法

1.对象锁钥匙只能有一把才能互斥,才能保证共享变量的唯一性 2.在静态方法上的锁,和 实例方法上的锁,默认不是同样的,如果同步需要制定两把锁一样. 3.关于同一个类的方法上的锁,来自于调用该方法的对象,如果调用该方法的对象是相同的,那么锁必然相同,否则就不相同.比如 new A().x() 和 new A().x(),对象不同,锁不同,如果A的单利的,就能互斥. 4.静态方法加锁,能和所有其他静态方法加锁的 进行互斥 5.静态方法加锁,和xx.class 锁效果一样,直接属于类的 转载:http

synchronized关键字修饰非静态方法与静态方法的区别

这里我们先创建ObjLock类,并实现Runnable接口.并创建一个Demo类,具有被synchronized关键字修饰的非静态方法与静态方法. 非静态方法 public class ObjLock implements Runnable { Demo demo; public ObjLock(Demo demo){ this.demo = demo; } public void run() { demo.getI(Thread.currentThread().getName()); } pu

JAVA synchronized关键字锁机制(中)

synchronized 锁机制简单的用法,高效的执行效率使成为解决线程安全的首选. 下面总结其特性以及使用技巧,加深对其理解. 特性: 1. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.       2. 当一个线程同时访问object的一个synchronized(this)同步代码块时,其它线程仍然可以访问非修饰的方法或代码块.       3. 当多个线程同时访问object的synchronized(this)同步代码

【JAVA并发】共享资源访问

什么是共享资源 先了解下JAVA程序在运行时内存的分布,由以下部分组成 堆:所有线程共享一个堆:存放的都是new 出来的对象: 方法区:所有线程共享一个方法区:里面存放的内容有点杂,可以认为是除堆和栈中的其它东西(如类信息,静态变量,常量,代码等): 程序计数器:也叫PC,存放下一条指令所在单元的地址的地方; JAVA栈:每个线程都有一个自己的JAVA栈;存放的一般是方法的局部变量,方法出口信息等: 本地方法栈:与JAVA栈类似,区别是使用的对象不一样,本地方法栈是给Native方法使用的,JA

黑马程序员--Java基础学习笔记【单例设计模式、网络编程、反射】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 设计模式分类: 创建模式:是对类的实例化过程的抽象化,又分为类创建模式和对象创建模式 类创建模式:工厂方法模式 对象-:简单工厂(静态工厂方法)模式.抽象工厂模式.单例模式.建造模式- 结构模式:描述如何将类或者对象结合在一起形成更大的结构 适配器模式.缺省模式.合成模式.装饰模式(包装模式).门面模式- 行为模式:对不同的对象之间划分责任和算法的抽象化 不变模式.策略模式.迭代子模式.命令模

一个四五年的Java开发程序员,该准备哪些去面试?

上周面试了一周,感触颇深,总结一下. 面试了公司大概有阿里,携程,爱奇艺,唯品会,途牛,bilibili,大众点评,阿里和爱奇艺是电话面试,其他现场面试. 首先,五年左右,应该算高级开发工程师,大部分面试不用去做题,背string和stringbuilder区别的,几乎都是底层和远离,分布式等.虽然一个程序员,在工作中大部分还是写流水代码,增删查改. 1 JVM 这个大公司基本都会问,内存模型,GC,jvm都有哪些区域?栈桢存了什么? 常用垃圾回收器哪些,特点?jvm性能调优,这些从周志明的jv

java对象锁和类锁

参考 http://www.cnblogs.com/yyyyy5101/archive/2011/07/20/2112157.html http://www.cnblogs.com/kkcheng/archive/2011/02/25/1964521.html http://my.oschina.net/billowworld/blog/120766 1.java对象锁 所有对象都自动含有单一的锁.JVM负责跟踪对象被加锁的次数.如果一个对象被解锁,其计数变为0.在任务(线程)第一次给对象加锁的

JAVA经验:很有启发(二)

上回讲了Java动态加载机制.classLoader原理和关于jdk和jre三个问题.这次延续着讲一些具体的类库: 1. 关于集合框架类 相信学过Java的各位对这个名词并不陌生,对 java.util.*这个package肯定也不陌生.不知道大家查询API的时候怎么去审视或者分析其中的一个package,每个包最重要的两个部 分就是interfaces和classes,接口代表了它能做什么,实现类则代表了它如何去做.关注实现类之前,我们应该先理解清楚它的来源接口,不管 在j2se还是j2ee中