我正在使用线程和相关的runnable对象的Map来跟踪runnable。这背后的目的是什么 interruptedException
如果抛出,我想访问当前线程及其可运行对象。
Map<Thread, Runnable> myMap = new Map<Thread, Runnable>();
ExecutorService pool = Executors.newFixedThreadPool(5);
pool.execute(new myRunnable());
但是当我将runnable添加到线程池时,我想不出一种方法来填充Map。
如何将一个条目添加到包含线程及其可运行对象的Map中?
4条答案
按热度按时间pcrecxhr1#
可以使用threadpoolexecutor的钩子方法:
46qrfjad2#
你从错误的Angular 接近它。一旦你屈服于线程你应该在印象中,你的工作已经完成。发生的任何中断都应由执行线程处理。
例如
或
carvr3hs3#
executorservice背后的思想是从正在使用的线程中抽象出来。你可以重写myrunnable来泄露信息。
所以你会打电话
然后在myrunnable中,让构造函数保存对mymap的引用并添加
到run方法-其中originalrunnableobject是对此的已保存引用。当然,您需要您的Map是一个并发Map(您不能像您试图做的那样示例化Map接口)。
然而,有人不得不问,为什么你首先要这么做,就像我说的,执行者应该给出一个抽象层,你似乎想颠覆它。
ruoxqz4g4#