0 0

java线程池里的线程,怎么设置Timeout?0

ExecutorService pool = Executors.newFixedThreadPool(threadCount);
pool.execute(r);


这种方式运行的线程,怎么给每个线程制定一个Timeout?
超时了直接结束线程。
2014年6月13日 11:13

1个答案 按时间排序 按投票排序

0 0

应该是没有这个功能的,因为线程池里面的线程实际上是复用的,即执行完一个Job以后会从Quenue(任务队列)里面取新的JOB。

如果有这样的需求可以:
1)控制JOB的执行时间不能太长,否则可能会造成阻塞;
2)在JOB的实现(run方法)里面做相应的控制;
3)如果JOB有长时间和短时间两种模式,可以考虑放在两个线程池中,避免长时间的任务阻塞短时间的任务;
4)也可以控制等待队列的任务个数,但是Executors默认的Factory方法是没有这个参数的,需要直接new ThreadPoolExecutor

2014年6月13日 13:57

相关推荐

    Java线程池学习资料-全

    Java线程池是一种高效管理并发任务的工具,它通过复用线程来减少创建和销毁线程的开销,从而提高系统性能。线程池的核心组成部分包括工作队列(Work Queue)、工作线程(Worker Threads)和任务调度器(Executor)。...

    BlockingQueue队列自定义超时时间取消线程池任务

    `newFixedThreadPool`是`java.util.concurrent`包中的一个线程池工厂方法,用于创建固定数量线程的线程池。`FutureTask`则是表示异步计算的结果,它实现了`RunnableFuture`接口,提供了对任务状态的查询和结果获取。...

    Java多线程(Synchronized+Volatile+JUC 并发工具原理+线程状态+CAS+线程池)

    TIMED_WAITING 状态表示线程正在等待某个条件的满足,但有 timeout 时间限制;TERMINATED 状态表示线程已经结束执行。 5. CAS CAS(Compare-And-Swap)是一种无锁机制,用于实现线程安全的更新操作。CAS 操作包括...

    JAVA服务器端应用Socket线程池

    - **`WORK_WAIT_TIMEOUT`**: 空闲线程等待新任务的时间(毫秒)。 - **`pool`**: 用于存放所有工作线程的容器。 - **`monitor`**: 监控线程,用于检测并回收空闲线程。 - **`maxThreads`**: 线程池最大线程数。 - **...

    线程超时死掉

    解决线程的死掉问题和超时问题特别好使,在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分,在java.util.concurrent...

    个人总结40个Java多线程面试问题和答案

    避免deadlock的方法有多种,包括避免嵌套锁、避免无限循环、使用锁的Timeout机制等。开发者应该根据实际情况选择适合的方法来避免deadlock。 11. Java多线程的优点是什么? Java多线程的优点是可以充分发挥多核CPU...

    14个Java线程并发面试题和答案..pdf

    知识点:Java线程池的定义、可重用线程、异步任务。 12. 问题:如何创建Java线程池? 答案:可以使用Executors类的newFixedThreadPool()、newCachedThreadPool()等方法创建Java线程池。 知识点:Java线程池的创建...

    JAVA服务器端Socket线程池

    public static final int WORK_WAIT_TIMEOUT = 60 * 1000; protected Vector pool; // 存放空闲线程 protected MonitorRunnable monitor; // 监控线程池中空闲线程的监控线程 protected int maxThreads; // 线程池中...

    JAVA中的线程知识点整理

    `get()`方法会阻塞直到结果可用,而`get(long timeout, TimeUnit unit)`则会在超时后抛出`TimeoutException`。 3. **线程状态** - 新生(NEW):线程刚刚创建,尚未启动。 - 可运行(RUNNABLE):线程已启动,...

    java线程.rar

    - **定时等待(Timed Waiting)**:线程处于有限期等待状态,如`sleep()`、`Object.wait(long timeout)`。 - **终止(Terminated)**:`run()`方法执行完毕或者因异常退出。 3. **线程同步** - **synchronized...

    2022年Java代码构建一个线程池Java教程.docx

    4. 可以通过`executor.isTerminated()`检查线程池是否已经完全关闭,`executor.awaitTermination(long timeout, TimeUnit unit)`方法可以等待线程池完全关闭。 在Java中,线程池的使用不仅可以提高系统性能,还可以...

    深入浅出Java多线程.doc

    除了基本的`join()`和`join(long timeout)`,Java还提供了一个版本`join(long timeout, int nanos)`,允许更精确地控制等待时间,这里的`nanos`参数用于指定额外的纳秒级等待时间。 值得注意的是,`join()`方法会抛...

    Java线程基础教程完整版

    - **定时等待**(TIMED_WAITING):线程在等待一段时间或另一个线程的通知,如`Thread.sleep()`或`Object.wait(long timeout)`。 - **终止**(TERMINATED):线程执行完毕或被强制停止。 3. **线程控制** - **...

    Java的多线程编程

    ### Java的多线程编程详解 #### 一、引言 在现代计算机系统中,多线程编程是一种常见的技术,用于提高程序的并发性和效率。Java作为一种广泛应用的编程语言,自其诞生以来就内置了对多线程的支持,使得开发者能够...

    解决Spring session(redis存储方式)监听导致创建大量redisMessageListenerContailner-X线程问题

    SimpleAsyncTaskExecutor线程池的核心特性是每次调用异步方法时都会创建一个新线程,虽然可以设置最大并发线程数量,但每次调用还是会为每个任务创建线程,这在频繁调用异步方法的场景下显然不是最优的解决方案。...

    java线程详细资料

    - 定时等待(Timed Waiting):线程在等待一段时间,如sleep()或Object的wait(long timeout)。 - 终止(Terminated):线程执行完毕或被中断。 3. **线程同步** - **synchronized关键字**:用于控制对共享资源的...

    Java 多线程学习总结6

    - **定时等待(Timed Waiting)**:线程处于有限期等待状态,如Thread.sleep(), Object.wait(long timeout)等。 - **终止(Terminated)**:run()方法执行完毕或抛出异常,线程结束。 3. **线程同步与互斥** - *...

    java面试题之多线程.pdf

    - **定时等待(TIMED_WAITING)**:线程进入有限期等待,如`Thread.sleep()`或`Object.wait(long timeout)`。 - **终止(TERMINATED)**:线程执行完毕或被中断。 5. **线程控制**: - **join()**:使当前线程...

    Java Thread Programming (Sams) java线程编程(含code)

    - 定时等待(Timed Waiting):线程被调用了`sleep()`, `join()`, 或者`Object.wait(long timeout)`方法,有特定等待时间。 - 结束(Terminated):线程执行完毕或被中断。 4. **线程同步** - `synchronized`...

Global site tag (gtag.js) - Google Analytics