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

每天一题(五)

2013-10-22 
每日一题(五)问题:java线程同步实现的方法有哪几种分析:java实现同步主要使用synchronized关键字,同时伴随

每日一题(五)

问题:

java线程同步实现的方法有哪几种

分析:

java实现同步主要使用synchronized关键字,同时伴随使用的有wait().sleep().notify().Allnotify()方法

解答:

java同步方式有两种:同步方法和同步块。

1.同步方法

给一个方法增加synchronized关键字就可以使它成为同步方法,方法可以是静态方法和非静态方法。但是不能是尚未实现的方法(抽象方法与接口方法)。

eg1.

public  void run(){synchronized(this){//do something.}}


原理:synchronized的目的是使同一个对象的多个线程进行同步。

每个对象都有一个“锁标志”。当这个对象的一个线程访问某个synchronized的数据时,所有的synchronized数据都会上锁。因为“锁标志”被当前线程带走。

如果对静态方法(包含静态块),网上有篇文章是这样解释的“那么线程锁定的就不是这个类的对象了,也不是这个类自身,而是这个类对应的java.lang.Class类型的对象。同步方法和同步块之间的相互制约只限于同一个对象之间,所以静态同步方法只受它所属类的其它静态同步方法的制约,而跟这个类的实例(对象)没有关系。”这里其实就是指的类对象(用于实例化其他对象)。




热点排行