java.util.concurrent.ThreadPoolExecutor#DiscardOldestPolicy ( )源码实例Demo

下面列出了java.util.concurrent.ThreadPoolExecutor#DiscardOldestPolicy ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

public DataEventManager(MetricRegistry metrics) {
  perNodeDataHandlers = new CopyOnWriteArrayList<>();
  perNodeDataHandlerQueue = new ArrayBlockingQueue<>(DataEventConstants.PER_NODE_DATA_QUEUE_SIZE);
  perNodeDataEventExecutor = new ThreadPoolExecutor(
          DataEventConstants.PER_NODE_DATA_CORE_POOL_SIZE,
          DataEventConstants.PER_NODE_DATA_MAX_POOL_SIZE,
          DataEventConstants.PER_NODE_DATA_KEEP_ALIVE_TIME_SECONDS, TimeUnit.SECONDS,
          perNodeDataHandlerQueue, new ThreadPoolExecutor.DiscardOldestPolicy());
  
  sharedDataHandlers = new CopyOnWriteArrayList<>();
  sharedDataHandlerQueue = new ArrayBlockingQueue<>(DataEventConstants.SHARED_DATA_QUEUE_SIZE);
  sharedDataEventExecutor = new ThreadPoolExecutor(DataEventConstants.SHARED_DATA_CORE_POOL_SIZE,
          DataEventConstants.SHARED_DATA_MAX_POOL_SIZE,
          DataEventConstants.SHARED_DATA_KEEP_ALIVE_TIME_SECONDS, TimeUnit.SECONDS,
          sharedDataHandlerQueue, new ThreadPoolExecutor.DiscardOldestPolicy());
  
  metrics.register(DataEventConstants.PER_NODE_DATA_SUBSCRIBERS_SIZE,
          (Gauge<Integer>) () -> perNodeDataHandlers.size());
  metrics.register(DataEventConstants.PER_NODE_DATA_SUBSCRIBERS_QUEUE_SIZE,
          (Gauge<Integer>) () -> perNodeDataHandlerQueue.size());
  metrics.register(DataEventConstants.SHARED_DATA_SUBSCRIBERS_SIZE,
          (Gauge<Integer>) () -> sharedDataHandlers.size());
  metrics.register(DataEventConstants.SHARED_DATA_SUBSCRIBERS_QUEUE_SIZE,
          (Gauge<Integer>) () -> sharedDataHandlerQueue.size());
  
}
 
源代码2 项目: pmq   文件: ServerServiceImpl.java
@Override
public void startBroker() {
	if (startFlag.compareAndSet(false, true)) {
		isBroker=true;
		executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(50),
				SoaThreadFactory.create("ServerServiceImpl", true), new ThreadPoolExecutor.DiscardOldestPolicy());
		updateHeartBeat();
		executor.execute(() -> {
			while (isRunning) {
				try {
					updateHeartBeat();
				} catch (Exception e) {
					log.error("ServerServiceImpl_updateHeartBeat_error", e);
				}
				Util.sleep(soaConfig.getServerHeartbeat() * 1000);
			}
		});
	}

}
 
源代码3 项目: pmq   文件: ServiceTest.java
private void sendMessage(MqClient.MqClientBase mqClientBase, List<String> topicNames) {
	// 初始化线程
	executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(10),
			SoaThreadFactory.create("mq-all-process-test", true), new ThreadPoolExecutor.DiscardOldestPolicy());
	executorStart = true;
	// 异步一直发消息
	executor.execute(new Runnable() {
		@Override
		public void run() {
			while (executorStart) {
				try {
					for (String topicName : topicNames) {
						send(mqClientBase, topicName);
					}
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	});
}
 
@PostConstruct
private void init() {
	initMetric();
	threadSize = soaConfig.getRegisterInstanceThreadSize();
	executor = new ThreadPoolExecutor(threadSize, threadSize, 0L, TimeUnit.MILLISECONDS,
			new LinkedBlockingQueue<Runnable>(50), SoaThreadFactory.create("registerInstance", true),
			new ThreadPoolExecutor.DiscardOldestPolicy());
	soaConfig.registerChanged(new Runnable() {
		@Override
		public void run() {
			if (threadSize != soaConfig.getRegisterInstanceThreadSize()) {
				threadSize = soaConfig.getRegisterInstanceThreadSize();
				log.info("RegisterInstanceThreadSize_Changed_{}", threadSize);
				executor.setMaximumPoolSize(threadSize);
				executor.setCorePoolSize(threadSize);
			}
		}
	});
	executor.execute(() -> {
		registerInstance();
	});
}
 
源代码5 项目: java-study   文件: ThreadPoolTest.java
/**
	 * ThreadPoolExecutor线程池
	 */
	private  static void threadPoolExecutor() {
		int corePoolSize=5;
		int maximumPoolSize=10;
		long keepAliveTime=2L;
		// 线程核心数,最大线程数,线程缓存时间,时间格式,缓存队列 ,线程工厂,拒绝策略
		ThreadPoolExecutor tpx=new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, 
				TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(3),
				Executors.defaultThreadFactory(),new ThreadPoolExecutor.DiscardOldestPolicy());
		
		  for (int i = 1; i <= 10; i++) {  
	            try {  
	                // 产生一个任务,并将其加入到线程池  
	                String task = "[email protected] " + i;  
//	                System.out.println("put " + task);  
	                tpx.execute(new MyThread(task));  
	                // 便于观察,等待一段时间  
	                Thread.sleep(20);  
	            } catch (Exception e) {  
	                e.printStackTrace();  
	            }  
	        }  
	}
 
源代码6 项目: openjdk-jdk9   文件: ThreadPoolExecutorTest.java
/**
 * executor using DiscardOldestPolicy drops oldest task if saturated.
 */
public void testSaturatedExecute4() {
    final CountDownLatch done = new CountDownLatch(1);
    LatchAwaiter r1 = awaiter(done);
    LatchAwaiter r2 = awaiter(done);
    LatchAwaiter r3 = awaiter(done);
    final ThreadPoolExecutor p =
        new ThreadPoolExecutor(1, 1,
                               LONG_DELAY_MS, MILLISECONDS,
                               new ArrayBlockingQueue<Runnable>(1),
                               new ThreadPoolExecutor.DiscardOldestPolicy());
    try (PoolCleaner cleaner = cleaner(p, done)) {
        assertEquals(LatchAwaiter.NEW, r1.state);
        assertEquals(LatchAwaiter.NEW, r2.state);
        assertEquals(LatchAwaiter.NEW, r3.state);
        p.execute(r1);
        p.execute(r2);
        assertTrue(p.getQueue().contains(r2));
        p.execute(r3);
        assertFalse(p.getQueue().contains(r2));
        assertTrue(p.getQueue().contains(r3));
    }
    assertEquals(LatchAwaiter.DONE, r1.state);
    assertEquals(LatchAwaiter.NEW, r2.state);
    assertEquals(LatchAwaiter.DONE, r3.state);
}
 
源代码7 项目: Albianj2   文件: AlbianThreadPoolService.java
public void loading()
        throws RuntimeException, AlbianParserException {
    threadPool = new ThreadPoolExecutor(
            KernelSetting.getThreadPoolCoreSize(),
            KernelSetting.getThreadPoolMaxSize(), 300, TimeUnit.SECONDS,
            new ArrayBlockingQueue<Runnable>(KernelSetting
                    .getThreadPoolMaxSize()
                    - KernelSetting.getThreadPoolCoreSize()),
            new ThreadPoolExecutor.DiscardOldestPolicy());
    super.loading();
}
 
源代码8 项目: j2objc   文件: ThreadPoolExecutorTest.java
/**
 * execute using DiscardOldestPolicy drops task on shutdown
 */
public void testDiscardOldestOnShutdown() {
    final ThreadPoolExecutor p =
        new ThreadPoolExecutor(1, 1,
                               LONG_DELAY_MS, MILLISECONDS,
                               new ArrayBlockingQueue<Runnable>(1),
                               new ThreadPoolExecutor.DiscardOldestPolicy());

    try { p.shutdown(); } catch (SecurityException ok) { return; }
    try (PoolCleaner cleaner = cleaner(p)) {
        TrackedNoOpRunnable r = new TrackedNoOpRunnable();
        p.execute(r);
        assertFalse(r.done);
    }
}
 
public SimpleActiveGossiper(GossipManager gossipManager, GossipCore gossipCore,
                            MetricRegistry registry) {
  super(gossipManager, gossipCore, registry);
  scheduledExecutorService = Executors.newScheduledThreadPool(2);
  workQueue = new ArrayBlockingQueue<Runnable>(1024);
  threadService = new ThreadPoolExecutor(1, 30, 1, TimeUnit.SECONDS, workQueue,
          new ThreadPoolExecutor.DiscardOldestPolicy());
}
 
源代码10 项目: pmq   文件: ConsumerPollingService.java
@Override
public void start() {
	if (startFlag.compareAndSet(false, true)) {
		isStop = false;
		runStatus = false;
		executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(100),
				SoaThreadFactory.create("ConsumerPollingService", true),
				new ThreadPoolExecutor.DiscardOldestPolicy());
		executor.execute(new Runnable() {
			@Override
			public void run() {
				while (!isStop) {
					TraceMessageItem traceMessageItem = new TraceMessageItem();
					runStatus = true;
					try {
						traceMessageItem.status = "suc";
						longPolling();
					} catch (Exception e) {
						// e.printStackTrace();
						traceMessageItem.status = "fail";
						Util.sleep(1000);
					}
					traceMsg.add(traceMessageItem);
					runStatus = false;
				}
			}
		});
	}
}
 
源代码11 项目: pmq   文件: MqCheckService.java
@Override
public void start() {
	if (startFlag.compareAndSet(false, true)) {
		this.executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS,
				new LinkedBlockingQueue<Runnable>(100), SoaThreadFactory.create("MqCheckService", true),
				new ThreadPoolExecutor.DiscardOldestPolicy());
		isStop = false;
		runStatus = false;
		executor.execute(new Runnable() {
			@Override
			public void run() {
				while (!isStop) {
					runStatus = true;
					Transaction transaction = Tracer.newTransaction("mq-group", "check");
					try {
						checkData();
						transaction.setStatus(Transaction.SUCCESS);
					} catch (Exception e) {
						transaction.setStatus(e);
					} finally {
						transaction.complete();
					}
					runStatus = false;
					Util.sleep(120000);
				}
			}
		});
	}
}
 
源代码12 项目: pmq   文件: UiTopicService.java
@Override
public void start() {
	if (startFlag.compareAndSet(false, true)) {
		lastUpdateTime = System.currentTimeMillis() - soaConfig.getMqReportInterval() * 2;
		executor = new ThreadPoolExecutor(2, 2, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(50),
				SoaThreadFactory.create("UiTopicService", true), new ThreadPoolExecutor.DiscardOldestPolicy());
		executor.execute(() -> {
			while (isRunning) {
				try {
					if (System.currentTimeMillis() - lastAccessTime < soaConfig.getMqReportInterval()
							|| System.currentTimeMillis() - lastAccessTime > 1000 * 60 * 60 * 60) {
						if (System.currentTimeMillis() - lastUpdateTime > soaConfig.getMqReportInterval()) {
							initCache();
							if (uiQueueService.getQueueListCount().size() > 0) {
								lastUpdateTime = System.currentTimeMillis();
								lastAccessTime = System.currentTimeMillis() - soaConfig.getMqReportInterval() * 2;
							}
						}
					}
				} catch (Exception e) {
					log.error("UiQueueServiceImpl_initCache_error", e);
				}
				if (uiQueueService.getQueueListCount().size() == 0) {
					Util.sleep(10 * 1000);
				} else {
					Util.sleep(2 * 1000);
				}
			}
		});
	}
}
 
源代码13 项目: pmq   文件: UiQueueOffsetService.java
@Override
public void start() {
	if (startFlag.compareAndSet(false, true)) {
		lastUpdateTime = System.currentTimeMillis() - soaConfig.getMqReportInterval() * 2;
		executor = new ThreadPoolExecutor(2, 2, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(50),
				SoaThreadFactory.create("UiQueueOffsetService", true),
				new ThreadPoolExecutor.DiscardOldestPolicy());
		executor.execute(() -> {
			while (isRunning) {
				try {
					if (System.currentTimeMillis() - lastAccessTime < soaConfig.getMqReportInterval()
							|| System.currentTimeMillis() - lastAccessTime > 1000 * 60 * 60 * 60) {
						if (System.currentTimeMillis() - lastUpdateTime > soaConfig.getMqReportInterval()) {
							initCache();
							if (queueOffsetVos.get().size() > 0) {
								lastUpdateTime = System.currentTimeMillis();
								lastAccessTime = System.currentTimeMillis() - soaConfig.getMqReportInterval() * 2;
							}
						}
					}
				} catch (Exception e) {
					log.error("UiQueueOffsetServiceImpl_initCache_error", e);
				}
				if (queueOffsetVos.get().size() == 0) {
					Util.sleep(10 * 1000);
				} else {
					Util.sleep(1000);
				}
			}
		});
	}
}
 
源代码14 项目: pmq   文件: UiQueueService.java
@Override
public void start() {
	if (startFlag.compareAndSet(false, true)) {
		lastUpdateTime = System.currentTimeMillis() - soaConfig.getMqReportInterval() * 2;
		executor = new ThreadPoolExecutor(2, 2, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(50),
				SoaThreadFactory.create("UiQueueService", true), new ThreadPoolExecutor.DiscardOldestPolicy());
		executor.execute(() -> {
			while (isRunning) {
				try {
					if (System.currentTimeMillis() - lastAccessTime < soaConfig.getMqReportInterval()
							|| System.currentTimeMillis() - lastAccessTime > 1000 * 60 * 60 * 60) {
						if (System.currentTimeMillis() - lastUpdateTime > soaConfig.getMqReportInterval()) {
							initCache();
							initMessageCount();
							if (queueListAvg.get().size() > 0) {
								lastUpdateTime = System.currentTimeMillis();
								lastAccessTime = System.currentTimeMillis() - soaConfig.getMqReportInterval() * 2;
							}
						}
					}
				} catch (Exception e) {
					log.error("UiQueueServiceImpl_initCache_error", e);
				}
				if (queueListAvg.get().size() == 0) {
					Util.sleep(10 * 1000);
				} else {
					Util.sleep(2000);
				}
			}
		});
	}
}
 
源代码15 项目: o2oa   文件: DataProcessThreadFactory.java
private DataProcessThreadFactory() {
	/** 
     * Param:  
     * corePoolSize - 池中所保存的线程数,包括空闲线程。  
     * maximumPoolSize - 池中允许的最大线程数(采用LinkedBlockingQueue时没有作用)。  
     * keepAliveTime -当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间,线程池维护线程所允许的空闲时间。  
     * unit - keepAliveTime参数的时间单位,线程池维护线程所允许的空闲时间的单位:秒 。  
     * workQueue - 执行前用于保持任务的队列(缓冲队列)。此队列仅保持由execute 方法提交的 Runnable 任务。  
     * RejectedExecutionHandler -线程池对拒绝任务的处理策略(重试添加当前的任务,自动重复调用execute()方法) 
     */
	threadpool = new ThreadPoolExecutor( 20, 40, 30, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), new ThreadPoolExecutor.DiscardOldestPolicy() );
}
 
源代码16 项目: openjdk-jdk9   文件: ThreadPoolExecutorTest.java
/**
 * execute using DiscardOldestPolicy drops task on shutdown
 */
public void testDiscardOldestOnShutdown() {
    final ThreadPoolExecutor p =
        new ThreadPoolExecutor(1, 1,
                               LONG_DELAY_MS, MILLISECONDS,
                               new ArrayBlockingQueue<Runnable>(1),
                               new ThreadPoolExecutor.DiscardOldestPolicy());

    try { p.shutdown(); } catch (SecurityException ok) { return; }
    try (PoolCleaner cleaner = cleaner(p)) {
        TrackedNoOpRunnable r = new TrackedNoOpRunnable();
        p.execute(r);
        assertFalse(r.done);
    }
}
 
源代码17 项目: radar   文件: DiscoveryClientTest.java
@Test(expected = TimeoutException.class)
public void testRegisterInstanceRetry() throws InterruptedException, ExecutionException, TimeoutException {
	RadarClientConfig config = new RadarClientConfig(rgUrl);

	RadarInstance instanceRadar = RadarInstance.getBuilder()
			// 设置实例ID,可以为空
			.withCandInstanceId("262a15e7-6b60-432d-abdb-e939fff2fd76")
			// 设置环境名称
			.withClusterName("dc1.prd")
			// 设置AppId
			.withCandAppId("10010001")
			// 设置AppName
			.withAppName("RegistryInstanceRetry")
			// 设置IP地址
			.withHost("10.1.30.2")
			// 设置端口
			.withPort(0).build();

	DiscoveryClient client = DiscoveryClient.getInstance();

	ThreadPoolExecutor executors = new ThreadPoolExecutor(1, 1, 3L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(100),
			SoaThreadFactory.create("DiscoveryClientTest", true), new ThreadPoolExecutor.DiscardOldestPolicy());
	Future<Boolean> f = executors.submit(new Callable<Boolean>() {
		@Override
		public Boolean call() throws NoSuchFieldException, IllegalAccessException {
			// 启动客户端
			client.setConfig(config);
			Field field = client.getClass().getDeclaredField("isStartUp");
			field.setAccessible(true);
			field.set(client, new AtomicBoolean(false));
			// 启动客户端
			client.register(instanceRadar);
			return true;
		}
	});
	f.get(5, TimeUnit.SECONDS);
}
 
源代码18 项目: o2oa   文件: DataProcessThreadFactory.java
private DataProcessThreadFactory() {
	/** 
     * Param:  
     * corePoolSize - 池中所保存的线程数,包括空闲线程。  
     * maximumPoolSize - 池中允许的最大线程数(采用LinkedBlockingQueue时没有作用)。  
     * keepAliveTime -当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间,线程池维护线程所允许的空闲时间。  
     * unit - keepAliveTime参数的时间单位,线程池维护线程所允许的空闲时间的单位:秒 。  
     * workQueue - 执行前用于保持任务的队列(缓冲队列)。此队列仅保持由execute 方法提交的 Runnable 任务。  
     * RejectedExecutionHandler -线程池对拒绝任务的处理策略(重试添加当前的任务,自动重复调用execute()方法) 
     */
	threadpool = new ThreadPoolExecutor( 20, 40, 30, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), new ThreadPoolExecutor.DiscardOldestPolicy() );
}
 
源代码19 项目: porcupine   文件: ExecutorConfiguration.java
public Builder discardOldestPolicy() {
    configuration.rejectedExecutionHandler = new ThreadPoolExecutor.DiscardOldestPolicy();
    return this;
}
 
源代码20 项目: StringManipulation   文件: DelimitedListDialog.java
DelimitedListDialog(DelimitedListAction action, Editor editor) {
	this.action = action;
	this.editor = editor;

	//max 1 concurrent task + max 1 in queue
	executor = new ThreadPoolExecutor(1, 1,
		60, TimeUnit.SECONDS,
		new ArrayBlockingQueue<Runnable>(1),
		new DefaultThreadFactory("StringManipulation.DelimitedListDialog", true),
		new ThreadPoolExecutor.DiscardOldestPolicy());


	this.previewEditor = IdeUtils.createEditorPreview("", false);
	this.previewPanel.add(previewEditor.getComponent());
	previewEditor.getComponent().setPreferredSize(new Dimension(0, 200));

	AtomicBoolean allSelectionsEmpty = new AtomicBoolean(true);
	editor.getCaretModel().runForEachCaret(caret -> allSelectionsEmpty.set(allSelectionsEmpty.get() && !caret.hasSelection()));
	if (allSelectionsEmpty.get()) {
		sourceClipboard.setSelected(true);
	}

	final DocumentAdapter documentAdapter = new DocumentAdapter() {
		@Override
		protected void textChanged(@NotNull DocumentEvent documentEvent) {
			renderPreview();
		}
	};
	sourceDelimiter.getDocument().addDocumentListener(documentAdapter);
	destDelimiter.getDocument().addDocumentListener(documentAdapter);
	quote.getDocument().addDocumentListener(documentAdapter);
	unquote.getDocument().addDocumentListener(documentAdapter);
	sourceClipboard.addChangeListener(e -> renderPreview());
	sourceSelection.addChangeListener(e -> renderPreview());
	autoQuote.addChangeListener(e -> renderPreview());
	autoQuote.addChangeListener(e -> {
		quote.setEditable(!autoQuote.isSelected());
		if (quote.isEditable()) {
			if (quote.getText().equals("<auto>")) {
				quote.setText("");
			}
			quote.requestFocus();
		}
	});
	renderPreview();
}