Java 基于资源的可用线程池/执行器

Java 基于资源的可用线程池/执行器,java,multithreading,executorservice,Java,Multithreading,Executorservice,是否有现有的Java执行器(如newCachedThreadPool)将基于现有资源(特别是内存)创建和/或销毁线程 对于这个例子,我假设工作线程总是有工作要做,我只想根据内存使用情况改变池大小。奇怪的想法是,线程和池本身并不占用很多资源,所有这些都取决于每个工作线程内的实际执行逻辑。如果您在worker内部向哈希映射添加数百万个键,那么这个worker的一个实例就足以消耗所有内存。@AlexChernyshev:这正是我的观点。可运行任务占用一定的内存。我希望池/执行器根据可用内存调整运行的任

是否有现有的Java执行器(如newCachedThreadPool)将基于现有资源(特别是内存)创建和/或销毁线程


对于这个例子,我假设工作线程总是有工作要做,我只想根据内存使用情况改变池大小。

奇怪的想法是,线程和池本身并不占用很多资源,所有这些都取决于每个工作线程内的实际执行逻辑。如果您在worker内部向哈希映射添加数百万个键,那么这个worker的一个实例就足以消耗所有内存。@AlexChernyshev:这正是我的观点。可运行任务占用一定的内存。我希望池/执行器根据可用内存调整运行的任务数量。e、 g.如果使用的内存>80%,它将不会执行新任务。我认为最好在将新任务推送到执行器之前添加对可用资源的检查。因为执行者需要存储挂起的任务并等待某些情况(例如,您的已用内存>80%)发生,所以即使不启动任务,它也会占用资源。当然,我可以根据资源可用性排队并分派准备就绪的任务。不过我不想“重新发明轮子”。