
一 、缺点 synchronized(this)
缺点:A获得锁,B等A执行完,耗时。synchronized同步语句块解决
一个访问对象synchronized,另一个可以访问该对象非synchronized
不在synchronized代码块中就异步执行,在synchronized代码块中就是同步执行。


三 synchronized(object)代码块间使用
1.synchronized和synchronized(this)同步效果
2.synchronized(obj)两线程用同一“对象监视器”,结果才同步




五 静态synchronized方法与synchronized(class)代码块
synchronized静态方法和synchronized(class)代码块上都是是给Class类上锁,而synchronized关键字加到非static静态方法上是给对象上锁。




A,B和线程C持有的锁不一样,所以A和B运行同步,但是和C运行不同步。
六 数据类型String的常量池属性
常量池缓存功能:String s1 ="a"; String s2="a"; System.out.println(s1==s2);//true
常量池中字符串只存一份! s2不会申请新的空间,已存内存地址返回
synchronized(“abc”){} synchronized(“abc”){}
修饰方法持有相同锁,只有一个线程能运行。不要使用synchronized(string),用synchronized(object)