1、同步的前提是什么
1,必须要有两个或者两个以上的线程。
2,必须是多个线程使用同一个锁。(即:锁使用同一个对象或者在同一个同步代码块(同步函数)里)
必须保证同步中只能有一个线程在运行。
2、同步的优劣?
好处:解决了多线程的安全问题。
弊端:多个线程需要判断锁,较为消耗资源,
3、同步函数的锁是什么?如果同步函数被静态修饰后,使用的锁是什么呢?
函数需要被对象调用。那么函数都有一个所属对象引用。就是this。所以同步函数使用的锁是this。
如果同步函数被静态修饰后,使用的不是this。因为静态的方法是随着类的加载而执行,此时还没有对象存在,this自然也不存在。静态方法中也不可以定义this。但是静态方法执行时一定有该类对应的字节码文件对象。即:类名.class,该对象的类型是Class,所以静态的同步方法,使用的锁是该方法所在类的字节码文件对象,类名.class。
|
|