读书笔记:java线程_3
来源:互联网 发布:淘宝联盟怎么一键生成 编辑:程序博客网 时间:2024/04/30 09:37
1.一个线程进入阻塞状态,可能有如下原因:
你通过调用 sleep(milliseconds)使线程进入休眠状态,在这种情况下, 线程在指定的时间内不会运行。
你通过调用 wait( )使线程挂起。直到线程得到了notify( )或notifyAll( )消息,线程才会进入就绪状态。
线程在等待某个输入/输出完成。
)和notifyAll( )(因为不用 操作锁,所以sleep( )可以在非同步控制方法里调用)。如果你在非同步控制方法里调用 这些方法,程序能通过编译,但运行的时候,你将得到IllegalMonitorStateException异常,伴随着一些含糊的消息,比如“当前线程不是拥有者”。消息的意思是,调用wait( ), notify( )和notifyAll( )的线程在调用这些方法前必须“拥有”(获取)对象的锁。
你通过调用 sleep(milliseconds)使线程进入休眠状态,在这种情况下, 线程在指定的时间内不会运行。
你通过调用 wait( )使线程挂起。直到线程得到了notify( )或notifyAll( )消息,线程才会进入就绪状态。
线程在等待某个输入/输出完成。
线程试图在某个对象上调用其同步控制方法,但是对象锁不可用。
2.调用sleep( )的时候锁并没有被释放,理解这一点很重要。另一方面,wait( )方法的 确释放了锁,这就意味着在调用wait( )期间,可以调用线程中对象的其他同步控制方法。 当一个线程在方法里遇到了对wait( )的调用的时候,线程的执行被挂起,对象上的锁被 释放。
3.wait( ), notify( ),以及notifyAll( )的一个比较特殊的方面是这些方法是基类 Object的一部分,而不是像Sleep( )那样属于Thread的一部分。
)和notifyAll( )(因为不用 操作锁,所以sleep( )可以在非同步控制方法里调用)。如果你在非同步控制方法里调用 这些方法,程序能通过编译,但运行的时候,你将得到IllegalMonitorStateException异常,伴随着一些含糊的消息,比如“当前线程不是拥有者”。消息的意思是,调用wait( ), notify( )和notifyAll( )的线程在调用这些方法前必须“拥有”(获取)对象的锁。
5.有时线程会阻塞,比如在等待输入的时候。这时,你可以使用Thread对象的interrupt( )方法来跳出阻塞代码。
- 读书笔记:java线程_3
- Java 线程_3 线程的交互与守护线程
- 《MySQL必知必会》读书笔记_3
- 第九章 Java多线程机制 05_线程同步_3
- java线程:三种方式实现生产者消费者问题_3
- 读书笔记:java线程_1
- 读书笔记:java线程_2
- 【读书笔记】Java线程
- 【读书笔记】Java 线程
- java线程读书笔记(1)
- Java读书笔记之线程Stop
- Java中的线程池--读书笔记
- java流_3
- java 代码片段_3
- Java初级笔记_3
- java语法_3:IO
- JAVA基础知识_3
- Java面向对象_3
- (转载)IDisposable标准实现
- Spring源代码解析(八):Spring驱动Hibernate的实现
- js中字符串转化为jsion对象
- c++如何画实心的箭头
- cocos2d-x CCScale9Sprite
- 读书笔记:java线程_3
- Spring源代码解析(九):Spring Acegi框架鉴权的实现
- C/C++语言Notes
- (Linux高级编程)读写文件
- 大胖子,每天再忙也要抽点时间写点东西
- Qt之中文显示(QMessageBox、QLine…
- 如何追溯无线攻击源?
- 【discuzx2】个性签名的显示
- linker command failed with exit code 1 (use -v to see invocation)的错误调试