作者:紫云轻梦lyq | 来源:互联网 | 2023-05-31 19:33
synchronized对象监视器为Object时的使用。synchronized对象监视器为Class时的使用。非线程安全是如何出现的。关键字volate的主要作用。关键字vol
synchronized对象监视器为Object时的使用。
synchronized对象监视器为Class时的使用。
非线程安全是如何出现的。
关键字volate的主要作用。
关键字volate与synchronized的区别及使用情况。
非线程安全其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是
脏读,也就是取到的数据其实是被更改过的。二线程安全就是以获取的实例变量的值是经过同步处理的,
不会出现脏读的现象。
方法内的变量为线程安全。
方法中的变量不存在非线程安全的问题,永远都是线程安全的,这是方法内部的变量是私有的特性造成的。
实例变量非线程安全。
如果多个线程共同访问一个对象中的实例变量,则有可能出现非线程安全的问题。
如果对象仅有一个实例变量,则有可能出现覆盖的情况。
多个对象多个锁
创建了两个业务对象,在系统中产生出2个锁,所以是异步的。
关键字synchronized取得的锁都是对象锁,而不是把一段代码或方法(函数)当作锁。
哪个线程执行带synchronized关键字的方法,哪个线程就持有该方法所属对象的锁Lock,那么其他线程只能呈现等待状态,
前提是多个线程访问的是同一个对象。
但如果多个线程访问多个对象,则JVM会创建多个锁。
异步:asynchronized。
synchronized方法与锁对象。
通过关键字synchronized声明的方法一定是排队运行的。
共享:只有共享资源的读写访问才需要同步化,否则不需要。