三九宝宝网宝宝教育计划总结

线程同步的几种方法的总结

02月11日 编辑 39baobao.com

[同步作文三年级下册我的体育老师200字]我的体育老师张老师是男的,头发长长的,脸很长,大眼睛,鼻子很尖。他像个小孩子,总是逗我们玩。我们很喜欢他。这节体育课张老师请小朋友们当体育老师。首先,张老师请孙佳奕当体育老...+阅读

线程同步的方式包括:互斥锁、读写锁、条件变量、信号量和令牌。

以Java语言为例:

用synchronized关键字修饰同步方法。

同步有几种实现方法分别是synchronized,wait与notify

wait():使一个线程处于等待状态,并且释放所持有的对象的lock。

sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。

notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。

Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

同步是多线程中的重要概念。同步的使用可以保证在多线程运行的环境中,程序不会产生设计之外的错误结果。同步的实现方式有两种,同步方法和同步块,这两种方式都要用到synchronized关键字。

给一个方法增加synchronized修饰符之后就可以使它成为同步方法,这个方法可以是静态方法和非静态方法,但是不能是抽象类的抽象方法,也不能是接口中的接口方法。下面代码是一个同步方法的示例:

public synchronized void aMethod() {

// do something

}

public static synchronized void anotherMethod() {

// do something

}

线程在执行同步方法时是具有排它性的。当任意一个线程进入到一个对象的任意一个同步方法时,这个对象的所有同步方法都被锁定了,在此期间,其他任何线程都不能访问这个对象的任意一个同步方法,直到这个线程执行完它所调用的同步方法并从中退出,从而导致它释放了该对象的同步锁之后。在一个对象被某个线程锁定之后,其他线程是可以访问这个对象的所有非同步方法的。

同步块是通过锁定一个指定的对象,来对同步块中包含的代码进行同步;而同步方法是对这个方法块里的代码进行同步,而这种情况下锁定的对象就是同步方法所属的主体对象自身。如果这个方法是静态同步方法呢?那么线程锁定的就不是这个类的对象了,也不是这个类自身,而是这个类对应的java.lang.Class类型的对象。同步方法和同步块之间的相互制约只限于同一个对象之间,所以静态同步方法只受它所属类的其它静态同步方法的制约,而跟这个类的实例(对象)没有关系。

以下为关联文档:

iPod怎么同步音乐iPod是全球知名品牌苹果推出的一款优秀音乐播放器,不过很多小白朋友购买iPod后,不知道如何往iPod里边添加音乐,下面就来与大家详细介绍下。iPod怎么同步音乐呢?这里需要用到大家...

苹果怎么同步喜欢的音乐怎么有的不显示啊苹果音频支持AAC (16 至 320 Kbps)、受保护的AAC (来自 iTunes Store)、MP3 (16 至 320 Kbps)、MP3 VBR、Audible (2、3 和 4 格式)、Apple Lossless、WAV、AIFF 如果不是以上...

iphone4同步不了音乐首先连接iphone到电脑上, 然后提示连接了以后,点itunes的文件-将文件夹添加到资料库 然后到点iphone,音乐 勾选同步音乐,然后是“最近添加的” 如果最近添加的那个播放列表里有...

ITUNES同步不了音乐iphone4s可播放的视频格式是:MP4/MOV/3GP 。 如果是其他的格式需要转码才能播放,iphone自己录制的视频是MOV格式。 如何上传视频:如果你的视频不是以上三种格式需要进行转码处...

iphone4 iPad无法同步音乐了!你去 下载同步助手,里面有个媒体管理 直接点击修复媒体库异常,就OK乐 或者你越狱完,用同步助手的文件管理功能直接删除位于/var/mobile/Media目录下的iTunes_Control文件夹,删除...

锐龙线程撕裂者的游戏性能究竟怎么样那个,线程撕裂者不开游戏模式打游戏比r7 3700x还低,在master里面打开线程撕裂者的游戏模式就会跟r7 3700x强,跟r9 3900x差不多,如果你只是打游戏,而且预算不高就推荐买r7 3700x,有...

java多线程开发的同步机制有哪些一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走...

android应用程序开发为串口接收数据创建的子线程问题急!找Bug应该要有条理,我们首先不能确定"每次都去执行while(value2 != 1)以外的代码",因为程序执行的很快,可能收发很快,循环每妙执行多少次不确定,而且你的阻塞时间还是0,最好循环内外...

如何实现android音乐播放器歌词同步先从最基本的读取歌词文件开始: Public class LrcHandle { private List mWords = new ArrayList(); private List mTimeList = new ArrayList(); //处理歌词文件 public void...

推荐阅读
图文推荐