jjzjj

Executor

全部标签

java - 如何正确使用Java Executor?

我在我的多线程应用程序中使用了JavaExecutors,但我似乎无法弄清楚何时最好使用以下每种方式:1.ExecutorServiceexecutor=Executors.newFixedThreadPool(50);executor.execute(newA_Runner(...someparameter...));executor.shutdown();while(!executor.isTerminated()){Thread.sleep(100);}2.intPage_Count=200;ExecutorServiceexecutor=Executors.newFixedTh

java - android looper和executor线程池的区别

我正在阅读aboutloopers,还有ExecutorThreadPools他们似乎在做完全相同的事情……还是我遗漏了什么? 最佳答案 Looper管理线程将运行的任务。它把它们放在一个队列中,然后线程接管下一个任务。Looper绑定(bind)到特定线程。Executor封装了对不同线程的管理和分发任务。如果您的线程池大小固定为1,那么我认为它在设计上与Looper类似,因为它只会排队等待那个线程的工作。如果您有一个大小>1的线程池,那么它将设法将任务交给下一个可用的线程来完成工作,或者换句话说,它将在所有线程之间分配任务。编辑

java - Java 中的执行器和守护进程

我有一个MyThread对象,当我的应用程序通过服务器加载时我将其实例化,我将其标记为守护线程,然后对其调用start()。只要应用程序处于Activity状态,线程就会坐下来等待来自队列的信息。我的问题/问题是:目前MyThread正在扩展Thread,因为我将它标记为守护进程,并且我读到了如何更好地实现Runnable和使用Executors。所以我想问的是,如果MyThread将实现Runnable而不是扩展Thread(当然会重命名),我将使用newSingleThreadScheduledExecutor()如何、什么或可能在哪里标记一些东西作为守护进程。我希望我没有把术语搞

java - ThreadPoolExecutor 政策

我正在尝试使用ThreadPoolExecutor来安排任务,但在其策略方面遇到了一些问题。这是其声明的行为:如果运行的线程少于corePoolSize,执行器总是倾向于添加新线程而不是排队。如果corePoolSize或更多线程正在运行,则执行器总是更喜欢排队请求而不是添加新线程。如果请求无法排队,则会创建一个新线程,除非这会超过maximumPoolSize,在这种情况下,任务将被拒绝。我想要的行为是这样的:同上如果有超过corePoolSize但少于maximumPoolSize的线程在运行,则优先添加新线程而不是排队,使用空闲线程而不是添加新线程。同上基本上我不希望任何任务被拒

java - 线程池运行web服务请求的合理线程数

在Java中创建FixedThreadPoolExecutor对象时,您需要传递一个参数来描述Executor可以并发执行的线程数。我正在构建一个服务类,负责处理大量电话号码。对于每个电话号码,我需要执行Web服务(这是我的瓶颈),然后将响应保存在HashMap中。为了减少这个瓶颈对我的服务性能的危害,我决定创建Worker类来获取未处理的元素并对其进行处理。Worker类实现Runnable接口(interface),我使用Executor运行Workers。同时可以运行的Worker数量取决于ExecutorFixedThreadPool的大小。ThreadPool的安全大小是多少

python - 将 args、kwargs 传递给 run_in_executor

我正在尝试将参数传递给run_in_executor,如下所示:loop.run_in_executor(None,update_contacts,data={'email':email,'access_token':g.tokens['access_token']})但是,我收到以下错误:run_in_executor()gotanunexpectedkeywordargument'data'是否有通用的方法将参数传递给此函数? 最佳答案 使用functools.partial;这是执行此类操作的标准方法,在thedocs中特别推

python - 多个线程在 Python 中写入同一个 CSV

我是Python多线程的新手,目前正在编写附加到csv文件的脚本。如果我要将多个线程提交给一个concurrent.futures.ThreadPoolExecutor,它将行附加到一个csv文件。如果附加是这些线程执行的唯一与文件相关的操作,我该怎么做才能保证线程安全?我的代码的简化版本:withconcurrent.futures.ThreadPoolExecutor(max_workers=3)asexecutor:forcount,ad_idinenumerate(advertisers):downloadFutures.append(executor.submit(downl

python - 在 python 的 concurrent.futures 中查找 BrokenProcessPool 的原因

一言以蔽之当使用concurrent.futures并行化我的代码时,我得到了一个BrokenProcessPool异常。不会显示更多错误。我想找到错误的原因并询问如何做到这一点的想法。完整问题我正在使用concurrent.futures并行化一些代码。withProcessPoolExecutor()aspool:mapObj=pool.map(myMethod,args)我以(且仅以)以下异常结束:concurrent.futures.process.BrokenProcessPool:Achildprocessterminatedabruptly,theprocesspooli

Spark Executor端日志打印的方法

一、问题背景大数据平台采用yarnclient模式提交spark任务,并且多个离线Spark作业共用一个Driver,好处便在于——节省提交任务的时间。但同时也加大了运维工作的难度,因为任务日志打印到同一个文件中。为了区分开各个业务流程的日志,平台引入了log4j2RoutingAppender,配置如下所示:最近数据开发部门在使用大数据平台的二次开发算子时,反馈说平台提供的Logger对象打印不出日志,抱着好奇的心态,研究了一下平台使用的日志框架。其实平台提供的Logger对象打印在executor端打印不出日志很正常,因为上述的log4j2.xml文件并没有分发到executor端,更没有

Spark Executor端日志打印的方法

一、问题背景大数据平台采用yarnclient模式提交spark任务,并且多个离线Spark作业共用一个Driver,好处便在于——节省提交任务的时间。但同时也加大了运维工作的难度,因为任务日志打印到同一个文件中。为了区分开各个业务流程的日志,平台引入了log4j2RoutingAppender,配置如下所示:最近数据开发部门在使用大数据平台的二次开发算子时,反馈说平台提供的Logger对象打印不出日志,抱着好奇的心态,研究了一下平台使用的日志框架。其实平台提供的Logger对象打印在executor端打印不出日志很正常,因为上述的log4j2.xml文件并没有分发到executor端,更没有