所以,我很好奇.如何处理为线程设置最长执行时间?在线程池中运行时?
我有几种技巧,但我对它们并不十分满意.所以,我想我会问社区他们是怎么做的.
解决方法
通常,我只是从线程代码中定期轮询控制对象.就像是:
- interface ThreadControl {
- boolean shouldContinue();
- }
- class Timer implements ThreadControl {
- public boolean shouldContinue() {
- // returns false if max_time has elapsed
- }
- }
- class MyTask implements Runnable {
- private tc;
- public MyTask(ThreadControl tc) {
- this.tc = tc;
- }
- public void run() {
- while (true) {
- // do stuff
- if (!tc.shouldContinue())
- break;
- }
- }
- }