`
xkorey
  • 浏览: 150860 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

正确的暂停一个线程

阅读更多
以下代码抄自java核心技术8卷655页。isbn:978-7-111-23950-5,机械工业出版社。
public void run(){
   while(....){
     
        
        if(suspenndRequested){
         suspendLock.lock();
         try{while(suspendRequested)suspendCondition.await();}
         finally{suspendLock.unlock();} 
         }




 }
}
public void requestSuspend(){suspendRequested=true;}
public void requestResume(){
suspendRequest=false;
suspendLock.lock();
try{suspendCondition.signalAll();}
finally{suspendLock.unlock();}
}
private volatile boolean suspendRequested=false;
private Lock suspendLock = new ReentrantLock();
private Condition suspendCondition = suspendLock.newCondition();
分享到:
评论

相关推荐

    Java中停止线程执行的方法

    等待wait()或通知notify()不应该用于暂停线程,还有一个原因,等待wait()或通知notify()需要一个锁。只能从一个同步的方法或同步的代码块去调用它们,获取锁和释放锁的开销是比较大的。而且,只是暂停线程的话,...

    多线程编程指南PDF

    多线程基础介绍.........................................................................................................................................15 定义多线程术语...................................

    多线程编程指南(系统描述了线程标准 线程同步 多线程编程原则 等)

    1 多线程基础介绍15 定义多线程术语15 符合多线程标准16 多线程的益处17 提高应用程序的响应 17 有效使用多处理器17 改进程序结构17 占用较少的系统资源17 结合线程和RPC(远程过程调用)18 多线程概念18 并发性和...

    如何在Java中正确使用 wait, notify 和 notifyAll

    wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。...  我们可以利用wait()来让一个线程在某些条件下暂停运行。例如,在生产者消费者模

    Python中Threading用法详解

    但现在线程没有优先级,没有线程组,不能被销毁、停止、暂停、开始和打断。 Java Thread类的静态方法,被移植成了模块方法。 main thread: 运行python程序的线程 daemon thread 守护线程,如果守护线程之外的线程都...

    net学习笔记及其他代码应用

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。...47.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可...

    JAVA面试题最全集

    请写一个java程序实现线程连接池功能? 44.给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一...

    百度地图开发java源码-HttpDownload:基于socket的http多线程下载

    先发送head请求来获得请求资源的的基本信息,然后根据线程数,和range字头来的发送多个请求来获取数据。结束完成后将各个文件块整合。 现在只对MP4、.exe文件进行了测试,暂时可以下载下来。 还缺少的功能有: 文件...

    智动网页内容采集器 v1.92.zip

    10、可将采到的多个文件按模版保存到同一个文件中  11、可对网页上的多个部分内容分别进行分页内容采集  12、可自设客户信息模拟百度等搜索引擎对目标网站采集  13、本软件永久终身免费使用 智动网页内容采集...

    java 面试题 总结

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

    超级有影响力霸气的Java面试题大全文档

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

    精易模块[源码] V5.15

    4、新增“窗口_是否被遮挡”,判断一个窗口是否被置顶窗口遮挡,代码由易友【@shituo】提供。 5、改善“汇编类->置入汇编代码”增添一个参数是否保留以前代码。感谢易友【@无名侠】反馈。 6、修正“文本_加密”返回...

    Java复习题及答案

    14、一个线程的run方法包含以下语句,假定线程没有被打断,以下哪项是正确的( ) 1.try{ 2. sleep(100); 3. }catch(InterruptedException e){ } A、不能通过编译,因为在run方法中可能不会捕捉到异常。 B、在第2...

    java面试题

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

    基于Java实现(GUI)打字训练测试软件【100012550】

    3)监听你的键盘录入,同时启动线程去判断用户输入的字符与模板上的字符是否一致,不正确的用红色标记,正确的显示为绿色。 4)启动测试时记录起始时间,结束时获得结束时间,通过时间差统计出错误率和平均录入的...

    易语言-易语言进度条滚动特效

    Windows 7 下开始有的一个效果,适用于当你开启多线程但不确定任务进度的时候用。 已经拆分到单独的子程序,方便直接复制到别的项目使用 (记得复制常量)。 适用情景: 当你创建了一个线程执行任务,但无法确认其进度...

    vc++ 开发实例源码包

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 FreeBird2011Dlg.h 主对话框类头文件 MultiGroup.h 多播组类头文件 UserLink.h 用户链表类头文件 ListenSocket.h 侦听接口...

    StrongOD v0.2.6

    2,CPU DUMP 窗口,如果选中一个内存块的第一个字节,Infoline会显示异常 增加: 如果断点窗口没有任何断点,则不显示菜单 [2007.11.14 v0.10] 增加创建进程模式 本插件提供了3种方式来启动进程: 1,Normal 和...

    Windows 系统错误代码简单分析

    可能是一个包含注册表数据文件的结构已损坏,也可能内存中该文件的系统映像已损坏,或者因为备份副本(或日志)不存在(或损坏)导致无法恢复该文件。  1016 由注册表引起的 I/O 操作发生了不可恢复的错误。...

Global site tag (gtag.js) - Google Analytics