synchronized关键字---使用基础
使用同步方法
通过运行结果对比,可知,当tester对象在线程A中调用test1()时,该对象在线程B中调用同是同步方法的test2()时被阻塞。
? ? (3)上述情况对于sychronzied(this)或是synchronized(lock)同步语句中的其他对象锁同样使用,但要保证lock是同一个对象,否则没有同步效果。?
? ? 另外,synchronized关键字无法继承。
?
? ?分析完各种使用情况,最后说一下自己对线程同步的理解吧。拿前面的test()方法来说,不同线程中的同一个tester是彼此独立的,将一个tester对象看成一栋大楼,test()方法是房间,一个线程中使用tester.test()方法就好比该线程在tester大楼中开了一个新的test()房间,多个线程在并发的开房间,谁先开,使用的进度如何彼此之间并没有约束和影响。但是如果把tester对象锁定了,就像把这个大楼上了锁,一次只能允许一个线程进入(针对要使用上了锁的方法或代码块的线程而言),那么这个大楼里的所有房间(所有同步方法和同步代码块)就只有一个线程可以使用,这样,各线程对该tester对象的使用就是互斥的了,亦即有了同步的效果。
? ? ? ?