Thread中的join方法的作用就是使线程从异步执行变成同步执行。
1. 在使用synchronized块时应注意,synchronized块只能使用对象作为它的参数。如果是简单类型的变量(如int、char、boolean等),不能使用synchronized来同步。
2、要想解决“脏数据”的问题,最简单的方法就是使用synchronized关键字来使run方法同步,代码如下:
public synchronized void run() {
}
3、对于静态方法来说,只要加上了synchronized关键字,这个方法就是同步的,所以无论是使用对象.method(),还是使用类.method()来调用method方法,method都是同步的,并不存在非静态方法的多个实例问题。
4、synchronized关键字不能继承(不属于方法的一部分)
5、在定义接口方法时不能使用synchronized关键字。
6、构造方法不能使用synchronized关键字,但可以使用synchronized块来进行同步。
7、synchronized可以自由放置。
8、synchronized关键字只能用来同步方法,不能用来同步变量。
9、从表面上看synchronized锁定的是一个方法,但实际上synchronized锁定的是一个类。也就是说,如果在非静态方法method1和method2定义时都使用了synchronized,在method1未执行完之前,method2是不能执行的。静态方法和非静态方法的情况类似,但静态和非静态方法不会互相影响。
10、如果在类中使用synchronized关键字来定义非静态方法,那将影响这个类中的所有使用synchronized关键字定义的非静态方法。如果定义的是静态方法,那么将影响类中所有使用synchronized关键字定义的静态方法。这有点像数据库表中的表锁,当修改一条记录时,系统就将整个表都锁住了,因此,大量使用这种同步方式会使程序的性能大幅下降。
11、如果想使用synchronized块来锁定类中所有的同步非静态方法,需要使用this作为synchronized块的参数传入synchronized块中。
12、Synchronized块不管是正常执行完,还是因为程序出错而异常退出synchronized块,当前的sychronized块所持有的同步锁会自动释放。因此,在使用synchronized块时不必担心同步锁的释放问题。
13、在使用synchronized块同步类方法时,非静态方法可以使用this同步,而静态方法必须使用Class对象来同步。它们互不影响。当然,也可以在非静态方法中使用Class对象来同步静态方法。但在静态方法中不能使用this来同步非静态方法(因为在调用静态方法时,对象实例不一定被创建)。
相关推荐
Java开发注意事项,编程人员可以看看哦
JAVA开发规范,开发注意事项,JAVA入门必学文档,java命名规则等说明,JAVA开发规范,开发注意事项,JAVA入门必学文档,java命名规则等说明,
java-编写跨平台Java程序注意事项,相当经典。
java 面试题 java 基础 java 注意事项
主要针对JAVA初学者,可以通过实际上机操作来熟悉了解JAVA
非常好的东西,大家可要珍惜啊。非常好的东西,大家可要珍惜啊。非常好的东西,大家可要珍惜啊。非常好的东西,大家可要珍惜啊。非常好的东西,大家可要珍惜啊。
android java编程注意事项
使用Java语言编写应用程序最大的优点在于“一次编译,处处运行”,然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作...本文将为大家介绍编写跨平台Java程序注意事项。
java编程注意事项.chm(电子书格式),摘录精编版。很有帮助!
总结了JAVA的写代码的注意事项
计算机二级java考试注意事项.docx
很不错的代码规范文档,看了以后对自己有很大的帮助。
程序员面试技巧和注意事项10条细则,程序员面试技巧和注意事项10条细则,程序员面试技巧和注意事项10条细则,程序员面试技巧和注意事项10条细则,程序员面试技巧和注意事项10条细则
java安装具体步骤和注意事项 java安装具体步骤和注意事项 java安装具体步骤和注意事项 java安装具体步骤和注意事项
关于JAVA内存泄漏问题注意事项.doc
讲述了30 个JAVA编码规范以及一些编程中的注意事项,对初学者很有帮助!
基于Java的网购系统设计与开发的注意事项.pdf
Java面试应注意事项
针对系统安全,使用C、JAVA语言编程时的注意事项