线程池可创建每秒设置的线程数

时间:2019-03-07 23:18:05

标签: java multithreading threadpool

我想使用线程池在单独的线程上每秒调用10次方法。这样做的一个好方法是什么?

3 个答案:

答案 0 :(得分:2)

  

使用线程在单独的线程上每秒调用一次方法10次   池

定义该方法

让我们假设您要执行的方法是MyClass类的class MyClass{ static void myMethod(){ // some task } } ,如下所示。

Runnable

定义一个 Runnable runnable = () ->{ for(int i=0; i<10; i++){ try{ Thread.sleep(1000); MyClass.myMethod(); }catch{} } }; 每秒执行该方法10次的

int threadCount = 10; //whatever number of threads you wish
ExecutorService executor = Executors.newFixedThreadPool(threadCount);

初始化线程池

executor.execute(runnable);

开始执行

mapComp ::
  m ->
  (K -> V -> m -> m) ->
  (m -> Int) ->
  KVPairs -> IO ()
mapComp empty insert size kvpairs = do
  let m = foldr ins empty kvpairs where
        ins (k, v) t = insert k v t
  if size m /= length kvpairs
  then putStrLn $ "FAIL: " ++ show (size m) ++ ", " ++ show (length kvpairs)
  else pure ()

答案 1 :(得分:1)

您需要使用Executor框架维护线程(可以使用固定线程池),并使用这些线程并行调用方法。

ExecutorService执行程序= Executors.newFixedThreadPool(threadCount);

executor.submit(任务);

答案 2 :(得分:0)

如果您只想10个并行线程,请使用带有固定线程池的ExecutorService

https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool-int-

如果您想每秒完成某件事,则需要使用计划的线程池。

目前尚不清楚您真正需要什么。