newSingleThreadExecutor
全部标签 在我的应用程序中,我有4个不同的进程,它们永久运行,中间有一些小的停顿。当前版本的代码在单独的老式线程中执行每个进程:ThreadnlpAnalyzer=newThread(()->{//infinelopforautorestoreincaseofcrash//noinspectionInfiniteLoopStatementwhile(true){try{//thismethodshouldrunpermanently,pausesimplementedinternallyNLPAnalyzer.analyzeNLP(dbCollection);}catch(Exceptione)
这个问题在这里已经有了答案:ThedifferencebetweenExecutors.newSingleThreadExecutor().execute(command)andnewThread(command).start();(6个答案)关闭9年前。使用的优势是什么Executors.newSingleThreadExecutor().submit(job);比job.run();其中job是Runnable类的一个实例。
假设我需要处理3种类型的请求:A、B和C,如下所示:并发处理请求。同时有最多K(不能同时处理相同类型的请求。更一般地,类型数为N,并发请求数为K您将如何使用java.util.concurrent在Java中实现它? 最佳答案 您不能同时处理K个请求,这将违反第二条规则。最大并发请求数为数字类型。在你的情况下是三个。所以制作三个队列并将它们附加到三个线程。那是唯一的方法。Executors.newSingleThreadExecutor实现了这项技术。publicstaticvoidmain(String[]args){intN=2
我的代码中有几种情况,不同的线程可以创建工作项,出于各种原因,这些工作项不应并行完成。我想确保工作以先进先出的方式完成,无论它来自哪个线程。在Java中,我会将工作项放在单线程ExecutorService上;C#中有等效项吗?我用Queue和一堆lock(){}block拼凑了一些东西,但如果能够使用现成的东西就好了-货架和测试。更新:有没有人有使用System.Threading.Tasks的经验?它有解决此类问题的方法吗?我正在编写一个Monotouch应用程序,所以谁知道我是否能找到它的向后移植版本我可以开始工作,但它至少是future需要考虑的事情。更新#2对于不熟悉我正在谈
我的问题是:使用Executors.newFixedThreadPool(1)有意义吗??。在两个线程(main+oneAnotherThread)场景中使用执行器服务是否有效?通过调用newRunnable(){}直接创建新线程是否比使用ExecutorService更好?在这种情况下使用ExecutorService有哪些优点和缺点?PS:主线程和oneAnotherThread不访问任何公共(public)资源。我已经完成了:WhataretheadvantagesofusinganExecutorService?.和Onlyonethreadatatime!
好吧,标题说了算,Executors.newSingleThreadExecutor().execute(command)有什么区别?和newThread(command).start(); 最佳答案 在行为上,几乎没有。然而,一旦你有了一个Executor实例,你就可以向它提交多个任务,并让它们一个接一个地执行。您不能简单地使用原始Thread来做到这一点。 关于java-Executors.newSingleThreadExecutor().execute(command)和newT