`
zengshaotao
  • 浏览: 754545 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对class的同步注意事项

 
阅读更多

package web;

 

/**

 * synchronized锁住了整个静态类

 * @author zengst

 *

 */

class aaa2{

 

private static int a=2;

 

//定义了私有构造函数,外部无法通过该构造函数构造实例,除非重载

 

private aaa2(){}

 

public static void getInstance(){

if(a > 0){

System.out.println(Thread.currentThread().getName()+"getInstance");

try {

Thread.sleep(2000);

} catch (InterruptedException e) {

e.printStackTrace();

}

synchronized(aaa2.class){

System.out.println(Thread.currentThread().getName());

System.out.println(a);

a--;

System.out.println(a);

try {

Thread.sleep(2000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName());

}

}

}

 

}

 

public class StaticSharedTest {

 

public static void main(String args[]){

 

zengst2 z = new zengst2();

Thread t1 = new Thread(z);

Thread t2 = new Thread(z);

Thread t3 = new Thread(z);

t1.start();

t2.start();

t3.start();

}

}

 

class zengst2 implements Runnable{

 

public void run() {

aaa2.getInstance();

}

}

 

运行结果:

Thread-0getInstance

Thread-1getInstance

Thread-2getInstance

Thread-0

2

1

Thread-0

Thread-2

1

0

Thread-2

Thread-1

0

-1

Thread-1

 
分析,这里出现了-1.是没有按照预期的。
原因是因为,三个线程都进入了a>0的判断,虽然紧接着实现了对整个class的同步。
分享到:
评论

相关推荐

    涵盖了90%以上的面试题

    使用switch时有哪些注意事项 instanceof有什么作用 什么是不可变类 类型转换 Math类的round,ceil和floor方法 值传递和引用传递有什么不同? char型变量是否可以存储一个中文汉字 s=null和s=” ”是否相同 new String...

    百度地图开发java源码-BiuVideo:B站第三方客户端

    :warning:注意事项 由于V3版本会用到高德提供的API和百度统计API,故因此需要请求服务权限标识 如果已经有了Key,请在app/src/main/java/com/leon/biuvideo/values/apis包下,创建一个名为ApiKeys的Java文件,并将...

    xUtils jar包3个版本

    使用xUtils快速开发框架需要有以下权限: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 混淆时注意事项: ...

    php多进程框架-模拟java多线程接口simple-fork-php.zip

    注意事项 System V 消息队列由于在程序退出时可能存在尚未处理完的数据,所以不会销毁。如果需要销毁,请调用$queue->remove()方法删除队列 共享内存会在所有进程退出后删除 ...

    ABAP面试大全

    与建索引的注意事项! 10 2.2.2 ABAP透明表有哪几种数据类(data class)?对数据的存储有什么影响? 10 2.2.3 SAP中有几种表,他们的区别是什么? 10 2.2.4什么是簇表(cluster table)?举出知道的簇表。 10 2.2.5找...

    sciterjs-react:使用React的定制版本来编写sciterjs程序,支持浏览器和桌面(win,linux,macos)。 打包后,桌面终端的大小仅为7m

    注意事项: 编写CSS时,请使用x代替*,使用o代替%。 例如: 来源 网页包 结果 左边距:x => 左边距:* 高度:100oo => 高度:100 %% 如果该元素具有clickable事件,则将行为:“ clickable ”附加到该元素...

    authenticator.cc

    更新_data/locales/sidebar/xx.yml ,请确保同步所有语言之间的更改 制作表格时,请在表格下方的行上添加{: .table .table-striped} ,否则表格将无法正确格式化 添加语言 添加到_data/locales/languages.yml 确保_...

    校园助手iOS端HutHelper-Open.zip

     └── json:请求的示例数据请注意,因为使用了Pods,所以请下载完项目后先运行pod install注意事项考虑到在校用户信息的安全性,App的接口地址全部换成了镜像接口,与线上版本不同除此之外,一切和上线版本代码...

    Spring中文帮助文档

    在应用服务器中使用Hibernate的注意事项 12.3. JDO 12.3.1. 建立PersistenceManagerFactory 12.3.2. JdoTemplate和JdoDaoSupport 12.3.3. 基于原生的JDO API实现DAO 12.3.4. 事务管理 12.3.5. JdoDialect ...

    Spring API

    在应用服务器中使用Hibernate的注意事项 12.3. JDO 12.3.1. 建立PersistenceManagerFactory 12.3.2. JdoTemplate和JdoDaoSupport 12.3.3. 基于原生的JDO API实现DAO 12.3.4. 事务管理 12.3.5. JdoDialect ...

    C#5.0本质论第四版(因文件较大传的是百度网盘地址)

    14.1.3 匿名类型和隐式局部变量的更多注意事项 388 14.2 集合初始化器 390 14.3 是什么使类成为集合:IEnumerable 392 14.3.1 foreach和数组 392 14.3.2 foreach和IEnumerable 393 14.3.3 ...

    JSTL详细标签库介绍

    能够让系统在出现异常的情况下恢复过来的程序使用异常处理情况:异常诊断与异常处理不在同一个位置下时使用异常处理程序(若用户一直通过键盘与程序通话,那么就不能使用处理键盘输入处理)使用异常的注意事项:<BR>...

    Java开发详解.zip

    031311_【第13章:Java类集】_Map接口使用的注意事项笔记.pdf 031312_【第13章:Java类集】_IdentityHashMap类笔记.pdf 031313_【第13章:Java类集】_SortedMap类笔记.pdf 031314_【第13章:Java类集】_集合工具类:...

    asp.net知识库

    .net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常 Ado.net 与NHibernate的关系? 动态创建数据库 SQL Server数据库安全规划全攻略 .net通用数据库访问组件SQL Artisan应用简介1 在Framework1.0下...

    亮剑.NET深入体验与实战精要2

    15.5.8 使用DataReader的注意事项 568 15.5.9 Command对象的使用 569 15.5.10 反复地执行SQL语句用 Prepare() 569 15.5.11 分页的数据访问 570 15.5.12 SQL命令的优化 570 15.5.13 tempdb的使用技巧 572 15.5.14 ...

    亮剑.NET深入体验与实战精要3

    15.5.8 使用DataReader的注意事项 568 15.5.9 Command对象的使用 569 15.5.10 反复地执行SQL语句用 Prepare() 569 15.5.11 分页的数据访问 570 15.5.12 SQL命令的优化 570 15.5.13 tempdb的使用技巧 572 15.5.14 ...

Global site tag (gtag.js) - Google Analytics