当前位置: 首页 > news >正文

中国住房城乡建设厅网站济南自助建站模板

中国住房城乡建设厅网站,济南自助建站模板,wordpress tag__not_in,网站开发 专有名词提交时是使用防抖还是节流JDK的java.util.concurrent.ThreadPoolExecutor允许您将任务提交到线程池#xff0c;并使用BlockingQueue来保存提交的任务。 如果要提交的任务有数千个#xff0c;请指定一个“绑定”队列#xff08;即最大容量的队列#xff09;#xff0c;否则… 提交时是使用防抖还是节流 JDK的java.util.concurrent.ThreadPoolExecutor允许您将任务提交到线程池并使用BlockingQueue来保存提交的任务。 如果要提交的任务有数千个请指定一个“绑定”队列即最大容量的队列否则JVM可能会用完内存。 您可以设置RejectedExecutionHandler来处理队列已满时发生的情况但是仍然有待提交的任务。 这里是你展示如何使用一个简单的例子ThreadPoolExecutor具有BlockingQueue容量1000 CallerRunsPolicy确保当队列已满时其他任务将由提交线程处理。 int numThreads 5; ExecutorService exec new ThreadPoolExecutor(5, 5, 0L, TimeUnit.MILLISECONDS,new ArrayBlockingQueueRunnable(1000),new ThreadPoolExecutor.CallerRunsPolicy()); 这种方法的问题在于当队列已满时向池提交任务的线程会变得忙于执行任务本身在此期间队列可能会变空并且池中的线程可能会变得空闲。 这不是很有效。 我们希望一直保持线程池繁忙并且工作队列始终处于饱和状态。 有各种解决方案。 其中之一是使用自定义的Executor 当队列已满时该Executor将阻止从而防止其他任务提交到池中。 BlockingExecutor的代码如下所示。 它基于Brian Goetz2006年的BoundedExecutor示例。Java Concurrency in Practice。 1版。 Addison-Wesley专业。 第8.3.3节 。 import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.Semaphore; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit;import org.slf4j.Logger; import org.slf4j.LoggerFactory;/*** An executor which blocks and prevents further tasks from* being submitted to the pool when the queue is full.* p* Based on the BoundedExecutor example in:* Brian Goetz, 2006. Java Concurrency in Practice. (Listing 8.4)*/ public class BlockingExecutor extends ThreadPoolExecutor {private static final Logger LOGGER LoggerFactory.getLogger(BlockingExecutor.class);private final Semaphore semaphore;/*** Creates a BlockingExecutor which will block and prevent further* submission to the pool when the specified queue size has been reached.** param poolSize the number of the threads in the pool* param queueSize the size of the queue*/public BlockingExecutor(final int poolSize, final int queueSize) {super(poolSize, poolSize, 0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueueRunnable());// the semaphore is bounding both the number of tasks currently executing// and those queued upsemaphore new Semaphore(poolSize queueSize);}/*** Executes the given task.* This method will block when the semaphore has no permits* i.e. when the queue has reached its capacity.*/Overridepublic void execute(final Runnable task) {boolean acquired false;do {try {semaphore.acquire();acquired true;} catch (final InterruptedException e) {LOGGER.warn(InterruptedException whilst aquiring semaphore, e);}} while (!acquired);try {super.execute(task);} catch (final RejectedExecutionException e) {semaphore.release();throw e;}}/*** Method invoked upon completion of execution of the given Runnable,* by the thread that executed the task.* Releases a semaphore permit.*/Overrideprotected void afterExecute(final Runnable r, final Throwable t) {super.afterExecute(r, t);semaphore.release();} } 参考我们的JCG合作伙伴 Fahd Shariff在fahd.blog博客上使用BlockingExecutor进行节流任务提交 。 翻译自: https://www.javacodegeeks.com/2013/11/throttling-task-submission-with-a-blockingexecutor.html提交时是使用防抖还是节流
http://www.yutouwan.com/news/266536/

相关文章:

  • 一个网站的seo优化有哪些网络编程课程
  • 广州哪里有网站开发网站seo课程
  • 网站按城市做分站浙江网站建设哪家权威
  • 网站开发所有工具多大wordpress 菜单分类
  • 网站规划的原则是什么大淘客联盟做网站
  • 网站建设的公司地址如何在百度搜索到自己的网站
  • 辽宁定制网站建设推广南京中石化第五建设有限公司
  • 网站空间支持功能肇庆企业网站建设
  • 购物网站设计意义营销型网站建设应该注意什么
  • 胶州市 网站建设建网站html5
  • 全国做网站的公网站建设的需要是什么
  • 宁波做网站建设网站还难做啊
  • 做网站要几天网站建设与维护题库
  • 有创意的30个网站做网站坂田
  • 网站搜索用户体验自己可以学做网站吗
  • 网站制作地点网页制作与网站建设实战大全pdf
  • 嘉兴网站广优化公司dedecms视频网站模板
  • 做pc端网站怎么样网站恶意点击软件
  • 简单的电商网站厦门网红打卡景点有哪些
  • 萍乡网站建设网页界面设计以什么为载体
  • 中山网站优化排名河北建设网工程信息网
  • 整站seo优化推广wordpress 上传excel
  • 网站设计公司网站制作费用学做网站要学哪些
  • 网站如何制作注册阿里巴巴网站图片怎么做的
  • dw做的网站上传网站单页面策划
  • 武昌专业的网络推广团队seo推广方法
  • 怎么盗号网站怎么做族谱网站开发
  • 苏州网站建设机构网站建设费用的账务处理
  • 网站建设中 html5 模板下载市场推广
  • 安卓开发框架seo引擎优化是什么