2 zhangqinfu zhangqinfu 于 2016.04.12 14:07 提问

线程超时控制问题,怎么实现非阻塞线程超时

图片说明

使用该线程池方式实现超时管理,必须等待线程运行完毕 时阻塞式的 非阻塞式的怎么实现?

1个回答

luoxiaozhuo
luoxiaozhuo   2016.04.12 14:19
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
线程池中多线程设置超时退出监控
前言 在写多线程程序时,大多数情况下会先excutor创建线程池,然后再创建线程,但是对一些读数据库或者其他IO操作,容易堵住线程,此时就需要给线程设置超时时间,干掉超时的线程再重新拉起一个线程来,但是java线程创建并没有预留超时参数,研究了一下网上也没找到好的解决方案,干脆自己想办法搞了一个。 方案 监控线程往往有这么几种方案首先想到的应该就是future的get方法,有超时时间设置参数
关于gethostbyname在多线程环境下的阻塞问题
  Unix/Linux下的gethostbyname函数常用来向DNS查询一个域名的IP地址。 由于DNS的递归查询,常常会发生gethostbyname函数在查询一个域名时严重超时。而该函数又不能像connect和read等函数那样通过setsockopt或者select函数那样设置超时时间,因此常常成为程序的瓶颈。有人提出一种解决办法是用alarm设置定时信号,如果超时就用setjmp和lo
多线程开发之线程的超时
今天在上班的时候,同事突然遇到一个问题,就是他写的一个线程池,里面执行的线程没办法超时,因此导致程序在一直等待执行。但是对很多程序来说,如果一个线程如果运行时间太长的话,最好能够抛弃掉,但是一般的线程并没有超时设置。 对于这个问题我想到通过Future与Callable来实现这个功能Future与Callable接口Callable接口类似于Runnable,从名字就可以看出来了,但是Runnabl
java多线程实现任务超时监听
在实际的开发过程当中,会遇到这样的需求:某些功能为了防止系统挂死,需要进行时间控制,超过一定的执行时间,就提示任务执行超时,不再继续执行该任,从而保证系统健壮性和稳定性。其实仔细想想,我们可以把这样的需求,全部归结为一种“超时控制的业务模型”,建立起自己熟悉的业务模型,以后碰到类似的需求,可以借鉴此方案。若有机会设计或重构系统,在必要的模块中,也可以将该方案作为增强系统稳定性的一个备选方案。
Java多线程任务超时结束的5种实现方法
在用Java编写并发程序时,往往会碰到某个线程因计算量大或因阻塞而一直处于无响应的情况,我们可能会等的不耐烦(也可能是不想让它占用太多资源)想及时终止掉它,那就需要用到任务超时结束的技巧了。在刚接触到多线程时,我本以为API会提供这样一个多线程类:Thread(Runnable r, long timeout) ,第二个参数用来设置超时时间,可事实并非如此。因为这样的类不具有通用性,面向对象设计语
网络编程Socket之UDP(三)超时设置和非阻塞
前面遗留的两个问题: 1.客户
java通过线程控制程序执行超时(新)
java通过线程控制程序执行超时(新) 基本数据类型 反射 线程 超时
JAVA处理线程超时
在实际业务中,由其是多线程并开业务中,经常会遇到某个线程执行超时。而程序如果不捕获这类情况,就会导致程序一直处于等待状态,从而影响后续线程的运行。 比如说网络通迅、单任务下的复杂数据库查询等,通常处理这类问题,可以启用一个后台守护线程来监控用户线程(业务线程)的执行是否超时,如果超时就不在等待,这种做法,通常是在调用用户线程的.start()方法之前,调用守护线程的start()方法,同时将超时
Python能否实现超时,以及一些关于线程知识的复习
最近在试着写一个简单的分布式数据库(主要是受了OceanBase的影响),其中日志系统打算基于Raft来写。Raft的算法中有很多场景是需要基于超时来实现的,比如选举超时、心跳维护超时等,因此自然就想试着写一个通用的超时模块。这篇文章就来说说小秦在实现超时时候遇到的困难以及一些感想。(注意,Raft的超时可以通过socket.settimeout来设置,这里讨论的超时只的是针对一般方法的超时)
java多线程设置超时时间
情景:多线程中个别线程执行时间会很长,如果线程执行时间超过某段时间,自动结束该线程 百度了很多答案之后大部分的解决办法都是利用Future类中的get(long timeout, TimeUnit unit) 方法进行设置,但是这个方法是阻塞的,在取不到结果之前是不会执行后边的程序的。 下面代码是按照这个方法进行的测试:public static void main(String[] a