什么是线程安全?
当多个线程同时执行一个对象(方法或类),这个对象始终展现正常的行为,获得正确的结果,那么这个对象就是线程安全的
synchronized
加了synchronized的对象(方法或者类),称之为”互斥区“或者”临时区“。
当多个线程去执行synchronized中的代码时,是以排队的形式进行的,具体步骤为:
1、先有一个线程获得synchronized的锁
2、其他线程不停的去请求synchronized的锁,知道获得为止
综上所述,线程之间是有竞争的。
备注说明:
多个对象多把锁,每个new出来的对象都是有自己的一把锁,也就是多个对象之间的synchronized都是没有关系的,互不影响
除非是在静态方法上加了synchronized。那么此时的锁是类锁(.class 锁),那么不管new多少个对象,都是同一把锁。
网友评论