crossoverJie / JCSprout

👨‍🎓 Java Core Sprout : basic, concurrent, algorithm
https://crossoverjie.top/JCSprout
MIT License
27.08k stars 7.08k forks source link

线程池中你不容错过的细节 建议 #168

Open xiaoqingwanga opened 5 years ago

xiaoqingwanga commented 5 years ago

'为什是 run() 而不是 start()' Runnable 没有 start() 方法。Runnable 本身代表的是一个任务,Thread 代表线程,Thread 才可以 start()。

HemingPang commented 5 years ago

'为什是 run() 而不是 start()' Runnable 没有 start() 方法。Runnable 本身代表的是一个任务,Thread 代表线程,Thread 才可以 start()。

我也正想提这个问题:Runnable没有start方法。 另外,我觉得引出这个异常的同学代码没写好:针对业务线程池,consumer也是生产者,所以在consumer抛出异常后,必须从“队列”中获取product推送的消息,然后推送给内部workQueue。这样确保异常后,worker被干掉创建新的worker后,可以从内部workQueue中获取任务