我不是什么高手 ,我只能说这是按着我的所学给你解释解释。
格式1
synchronized(对象)
{
//需要被同步的代码
}
格式2
同步方法,就是在方法声明上加同步关键字。
具体我在给你说一下:
(1)产生线程安全的原因
A:多个线程访问出现延迟。
B:线程访问的随机性
注:线程安全问题在理想状态下,不容易出现,但一旦出现对软件的影响是非常大的。
(2)如果判断一个线程程序有没有安全问题呢?
A:多个线程操作共享数据
B:这个操作是分多条语句执行的。
(3)解决线程安全问题的方式
A:同步代码块
( 4)同步代码块问题:
A:同步代码块的锁是任意同一对象。
B:当你发现你把某个程序加了同步后,还没有解决线程安全问题。
这个时候,你需要考虑你使用的是否是同一把锁(对象);
(5)练习分析
A:自己分析线程安全问题怎么出现的。
B:自己分析同步代码块是如何解决线程安全问题的。
同步方法
A:当一个方法的方法体都被同步代码块给包围起来了,
我们就可以使用另外一种方式来表示。就是同步方法。
B:同步方法的使用格式非常简单。就是在方法声明上加同步关键字。
C:同步方法的锁是什么呢?如何测试的呢?
同步方法的锁是this对象。
通过在run里面同时使用同步方法和同步代码块来测试的。
D:静态方法的锁是什么呢?
静态方法的锁是当前类的class文件描述类对象 |