JAVA 线程池 其中一个线程执行失败 则线程重新执行或者重新提交任务 急

整个过程
1、在运行的线程中设置个了一个除数为0线程
2、线程池调用这个线程,通过futrue.get()方法获取到异常后,重新提交任务。

问题:现在调用futrue.get()时 程序就不在继续向下运行,此时异常信息也已经输出,应该怎么处理呢?

futrue.get()是在线程执行完毕之后才返回的结果。 就是说你能得到get的返回值的时候,线程已经执行完毕并退出了。追问

现在是想 线程池中 如果线程发生异常 则重新提交任务 现在是 出现异常后 通过 futrue.get() 一直堵塞,捕获异常后,又不知改如何 重新提交任务?

追答

get方法会一直阻塞到线程结束。 就是你的get方法得到值的时候,你的线程已经不存在了。

你如果想在线程里捕获异常,然后重新进行任务,那就是线程中的事情,跟futrue.get没有关系;

或则你通过get的返回值,重新new这个线程,重新添加到线程池中执行。

追问

实际应用中,是通过get()返回值 后重新 new 这个线程 还是直接在线程中处理好呢

追答

如果可以,直接处理效率更好点。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-30
try{ 预执行代码 } catch{出错后执行代码}追问

您是 为了蹭财富值吗

追答

你试试不就知道可以不

追问

在异常里面确实可以捕捉到,但应该怎么重新提交任务呢?

追答

你在catch中重新执行方法不就可以了么,但是有个危险变成死循环,做一个标志位执行几遍还报错的话就跳出循环吧
建议看看java 中 try catch finally 的用法

相似回答