JAVA Synchronized 关键字锁实例和锁CLASS对象的区别
来源:互联网 发布:特殊字符软件 编辑:程序博客网 时间:2024/05/20 07:16
package Thread.synchronizedTest;public class SynchronizedTest { /** * 锁住class对象 */ public static void synchronizedStatic(){ synchronized(SynchronizedTest.class){ System.out.println("synchronizedStatic"); try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * 锁住方法,lock标记打在该实力上 */ public synchronized void synchronizedMethod(){ System.out.println("synchronizedMethod"); try { Thread.sleep(8000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 不会有影响,正常调用 */ public void synchronizedMethod2WithNosynchronized(){ System.out.println("synchronizedMethod2WithNosynchronized"); } /** * synchronizedMethod 已经锁住实例, * 再加锁不成功 */ public void synchronizedMethod2(){ synchronized( this ){ System.out.println("synchronizedMethod2"); try { Thread.sleep(15000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * synchronizedMethod 已经锁住实例, * 再加锁不成功 */ public void synchronizedMethod3(){ synchronized( this ){ System.out.println("synchronizedMethod3"); } } /** * @param args * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException { // TODO Auto-generated method stub final SynchronizedTest t= new SynchronizedTest(); Thread th = new Thread( new Runnable(){ @Override public void run() { // TODO Auto-generated method stub t.synchronizedStatic(); } } ); th.start(); th = new Thread( new Runnable(){ @Override public void run() { // TODO Auto-generated method stub t.synchronizedMethod(); } } ); th.start(); th = new Thread( new Runnable(){ @Override public void run() { // TODO Auto-generated method stub t.synchronizedMethod2(); } } ); th.start(); t.synchronizedMethod2WithNosynchronized(); t.synchronizedMethod3(); }}
- JAVA Synchronized 关键字锁实例和锁CLASS对象的区别
- JAVA Synchronized 关键字锁实例和锁CLASS对象的区别
- java synchronized关键字this与this.Class的区别
- java的lock锁和synchronized关键字
- Java中Synchronized(this)和Synchronized(class)的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- 深入理解Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别
- Java Volatile关键字和 Synchronized关键字的区别
- java synchronized关键字,类锁,对象锁详解
- Thread和Runable的区别、Synchronized锁关键字
- lucene RAMDirectory org.apache.lucene.index.IndexNotFoundException
- MyEclipse9.1下 装在SVN 插件
- spring 中prototype 和 reqeust的区别
- lucene3.5与mysql 查询性能的对比
- java 数据结构--HashMap
- JAVA Synchronized 关键字锁实例和锁CLASS对象的区别
- 获取 X509 证书 serial (openssl)
- ORACLE RAC中的投票算法
- JAVA 自带的RMI远程调用功能的实现和原理
- JAVA中移位预算与与运算
- Spring编程式事务与声明式事务源码分析
- java static块的执行次数
- 采用DoGet方式提交中文,乱码产生原因分析及解决办法
- CXF传输复杂对象问题