Java线程中对象及变量的并发访问
2017-02-20 23:13
176 查看
(1)非线程安全问题存在于实例变量中,如果方法内部的私有变量,则不存在非线程安全的问题,所得结果也就是线程安全的了。方法中的变量不存在线程安全问题,永远都是线程安全的,这是方法内部的变量是私有的特性所造成的。
(2)在两个线程访问同一个对象中的同步方法是一定是线程安全。
(3)调用关键字synchronized声明的方法一定是排队运行的,要牢记共享这两个字,只有共享资源的读写访问才需要同步化,如果不是共享资源,那根本就没有同步的必要。
(4)A线程先持有object对象的Lock锁,B线程可以异步的方式调用object对象中的非synchronized类型的方法。
(5)A线程先持有object对象的Lock锁,B线程如果在这时调用object对象中的synchronized类型的方法则需要等待,也就是同步。
(6)关键字Synchronized拥有锁重入放入功能,也就是在使用该关键字时,当一个线程得到一个对象锁后,再次请求次对象锁时是可以再次得到该对象的锁的。
出现异常,锁自动释放。
(7)同步不具有继承性。
(8)Synchronized方法是对当前对象进行加锁,而synchronized代码块是对某一个对象进行加锁。
(9)在使用同步synchronized(this)代码块时需要注意的是,当一个线程访问object的一个synchronized(this)同步代码块时,其它线程对同一个object中所有其它synchronized(this)
(10)同步代码块的访问将被阻塞,这说明synchronized使用的对象监视器是一个。
(11)多个线程调用同一个对象中的不同名称的synchronized同步方法或synchronized(this)同步代码块时,调用的效果就是按顺序执行,也就是同步的,阻塞的。
(12)synchronized同步方法的作用:
1) 对其他synchronized同步方法或synchronized(this)同步代码块调用呈阻塞状态。
2) 同一时间只有一个线程可以执synchronized同步代码块中的代码。
(13)synchronized(this)同步代码的作用:
1) 对其他synchronized同步方法或synchronized(this)同步代码调用呈阻塞状态。
2) 同一时间只有一个线程可以执synchronized同步方法中的代码。
(14)Synchronized关键字加到static静态方法上是给Class类上锁,而synchronized关键字加到非static静态方法上是给对象上锁。
(15)关键字volatile的主要作用:
1)使变量在多个线程间可见。
2)该关键字是强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取得变量的值。
3)增加了实例变量在多个线程之间的可见性,
缺点:该关键字就是不支持原子性(同步性)。
主要应用的场合是在多个线程中可以感知实例变量被更改,并且可以获取最新的值使用,也就是用多线程读取共享变量时可以获得最新值使用。
(2)在两个线程访问同一个对象中的同步方法是一定是线程安全。
(3)调用关键字synchronized声明的方法一定是排队运行的,要牢记共享这两个字,只有共享资源的读写访问才需要同步化,如果不是共享资源,那根本就没有同步的必要。
(4)A线程先持有object对象的Lock锁,B线程可以异步的方式调用object对象中的非synchronized类型的方法。
(5)A线程先持有object对象的Lock锁,B线程如果在这时调用object对象中的synchronized类型的方法则需要等待,也就是同步。
(6)关键字Synchronized拥有锁重入放入功能,也就是在使用该关键字时,当一个线程得到一个对象锁后,再次请求次对象锁时是可以再次得到该对象的锁的。
出现异常,锁自动释放。
(7)同步不具有继承性。
(8)Synchronized方法是对当前对象进行加锁,而synchronized代码块是对某一个对象进行加锁。
(9)在使用同步synchronized(this)代码块时需要注意的是,当一个线程访问object的一个synchronized(this)同步代码块时,其它线程对同一个object中所有其它synchronized(this)
(10)同步代码块的访问将被阻塞,这说明synchronized使用的对象监视器是一个。
(11)多个线程调用同一个对象中的不同名称的synchronized同步方法或synchronized(this)同步代码块时,调用的效果就是按顺序执行,也就是同步的,阻塞的。
(12)synchronized同步方法的作用:
1) 对其他synchronized同步方法或synchronized(this)同步代码块调用呈阻塞状态。
2) 同一时间只有一个线程可以执synchronized同步代码块中的代码。
(13)synchronized(this)同步代码的作用:
1) 对其他synchronized同步方法或synchronized(this)同步代码调用呈阻塞状态。
2) 同一时间只有一个线程可以执synchronized同步方法中的代码。
(14)Synchronized关键字加到static静态方法上是给Class类上锁,而synchronized关键字加到非static静态方法上是给对象上锁。
(15)关键字volatile的主要作用:
1)使变量在多个线程间可见。
2)该关键字是强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取得变量的值。
3)增加了实例变量在多个线程之间的可见性,
缺点:该关键字就是不支持原子性(同步性)。
主要应用的场合是在多个线程中可以感知实例变量被更改,并且可以获取最新的值使用,也就是用多线程读取共享变量时可以获得最新值使用。
相关文章推荐
- Java多线程之对象及变量的并发访问
- java多线程(对象和变量的并发访问)
- 学习JAVA多线程编程 --- 《JAVA多线程编程核心技术》第2章 对象及变量的并发访问 笔记
- java多线程基础值对象和变量的并发访问之synchronized(二)
- JAVA多线程-对象及变量的并发访问(一)synchronized详解
- Java多线程核心技术(二):对象及变量的并发访问访问
- Java多线程 chapter 2 对象及变量的并发访问
- java多线程之-----对象及变量的并发访问1(synchronized同步方法)
- Java多线程编程核心技术---对象及变量的并发访问(二)
- Java多线程 - 对象及变量的并发访问
- Java多线程编程核心技术---对象及变量的并发访问(一)
- java多线程与线程并发五:多个线程访问共享对象和数据的方式
- 【Java多线程编程核心技术】2.对象及变量的并发访问(下)-笔记总结
- Java多线程二——对象及变量的并发访问(概念理解)
- Java多线程编程核心技术(二)对象及变量的并发访问
- Java多线程基础——对象及变量并发访问
- Java多线程编程核心技术---对象及变量的并发访问(一)
- Java多线程编程核心技术---对象及变量的并发访问
- java多线程系列(二)---对象变量并发访问
- Java多线程编程核心技术---对象及变量的并发访问(二)