我刚刚开始研究Java的executors
类和newcachedthreadpool()
方法。根据API,生成的线程池重用现有的thread
对象来执行新任务。
我有点困惑这是如何实现的,因为我在Thread
API中找不到任何方法可以设置现有Thread
对象的行为。
例如,可以从runnable
对象创建新的线程
,这使得线程
调用runnable
的run()
方法。但是,线程
API中没有将runnable
作为参数的setter方法。
我会很感激你的指点。
public void run() {
while(true) {
if(tasks available) {
Runnable task = taskqueue.dequeue();
task.run();
} else {
// wait or whatever
}
}
}
问题内容: 我刚刚开始研究Java的类和方法。根据API,生成的线程池将现有对象重用于新任务。 我对此感到有些困惑,因为我无法在API中找到任何方法来设置现有对象的行为。 例如,您可以创建一个 新的 从一个对象,这使得调用的方法。但是,API中没有使用a 作为参数的setter方法。 我将不胜感激任何指针。 问题答案: 执行人员在后台为您完成所有工作。是的,它仅使用现有的线程API。 下面的链接提
每个人我对使用线程池有一个误解。实际结果与该类的API描述不同。当我在线程池中使用时,它不重用线程,线程池等待构造函数中设置的KeepAliveTime,然后杀死这个线程并创建一个新线程。当我将KeepAliveTime设置为较小值时,比如1秒或更短,它会删除一个线程并重新创建它,但如果我设置一分钟,则不会创建新线程,因为不允许创建,队列已经满,所以所有任务都会被拒绝,但KeepAliveTime
本文向大家介绍固定线程池和缓存线程池之间的区别。,包括了固定线程池和缓存线程池之间的区别。的使用技巧和注意事项,需要的朋友参考一下 执行器框架是使用线程池概念设计的。线程池是重用已经创建的线程的方法,而不是每次执行当前任务都创建一个新线程的方法。 Executors类提供了一种工厂方法来创建线程池。ThreadPoolExecutor类是从许多Executors工厂方法返回的执行器的基本实现。 序
问题内容: 我有一个.csv文件,其中包含超过7000万行,其中每行将生成一个 Runnable ,然后由线程池执行。此Runnable将一条记录插入Mysql。 此外,我想记录csv文件的位置,以便 RandomAccessFile 定位。该位置被写入 File 。当线程池中的所有线程完成时,我想写入此记录。因此调用ThreadPoolExecutor.shutdown()。但是,当更多行出现时
问题内容: 您能解释一下Netty如何使用线程池工作吗?我是否正确理解,线程池有两种:老板线程和工人线程。老板用于执行I / O,而worker用于调用用户回调(messageReceived)来处理数据? 问题答案: 这是来自NioServerSocketChannelFactory文档 一个ServerSocketChannelFactory,它创建一个基于NIO的服务器端ServerSock
问题内容: 我有一个使用该框架的Java应用程序,并且我的代码看起来像这样 我的理解是,JVM会在内部创建5个线程的池。现在,当我在探查器中检查执行情况时,会得到类似的信息。 , 我需要一种方法来区分由我创建的和由服务器创建的 。 我在想,如果我可以命名线程池,它应该可以解决问题,但是看不到任何允许我执行此操作的API。 提前致谢。 问题答案: 您可以将自己的ThreadFactory传递给Sch