我使用自定义ThreadPoolExecutor
创建了ThreadFactory
。当我通过我的execute()
调用Runnable
方法时,会使用我的自定义Thread
创建新的ThreadFactory
。问题是我无法找到访问Runnable
内的信息的方法。
例如,我有一个实现Job
的类Runnable
。在Job
内,我有一个属性A
,我希望在我的自定义newThread()
的{{1}}方法中访问该属性。问题是我无法将ThreadFactory
作为参数传递给Runnable
,因为它不是Job
实例,它是Job
类的实例,而这个class是ThreadPoolExecutor.Worker
。
答案 0 :(得分:5)
您要么滥用或误解线程池的作用。创建线程和提交/运行任务的过程完全分离。线程池决定何时创建新线程,它可能与提交的任何新任务无关。
最后请记住,一个线程最有可能在多个Runnable
中重复使用。