首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

多线程——同步(synchronized)上

2012-10-28 
多线程——同步(synchronized)下接着上一讲《多线程——同步(synchronized)上》?上一讲中说到的第二个例子,通过s

多线程——同步(synchronized)下

接着上一讲《多线程——同步(synchronized)上

?

上一讲中说到的第二个例子,通过synchronized块,指定获取对象锁来达到同步的目的。那有没有其它的方法,可以通过synchronized方法来实现呢?

?

根据同步的原理:如果能获取一个共享对象锁或类锁,及可实现同步。那么我们是不是可以通过共享一个类锁来实现呢?

?

是的,我们可以使用静态同步方法,根据静态方法的特性,它只允许类对象本身才可以调用,不能通过实例化一个类对象来调用。那么如果获得了这个静态方法的锁,也就是获得这个类锁,而这个类锁都是TestThread类锁,及达到了获取共享类锁的目的。

?

实现代码如下:

?运行结果略,与例二中一样。

?

?

以上的内容主要是说明两个问题:同步块与同步方法。

1,同步块:获取的对象锁是synchronized(flag)中的flag对象锁。

2,同步方法:获取的是方法所属的类对象,及类对象锁。

???? 静态同步方法,由于多个线程都会共享,所以一定会同步。

???? 而非静态同步方法,只有在单例模式下才会同步。

?

?

接下来说一说能在synchronized内部运行的wait方法、notify方法与notifyAll方法。

先看一段JDK API 1.6 文档的原话:

?


热点排行