public class countdownlatchtest { private static final countdownlatch down_latch = new countdownlatch(2); public static void main(string[] args) throws interruptedexception { new thread(() -> { system.out.println(1); down_latch.countdown(); system.out.println(2); down_latch.countdown(); }).start(); down_latch.await(); system.out.println("3"); } }
public class bankwaterservice implements runnable { // 创建4个屏障,处理完之后执行当前类的run方法 private cyclicbarrier barrier = new cyclicbarrier(4, this); // 假设有4个计算任务,所以只启动4个线程 private executor executor = executors.newfixedthreadpool(4); // 保存每个任务的计算结果 private concurrenthashmap<string, integer> sheetbankwatercount = new concurrenthashmap<>(); private atomicinteger atomicinteger = new atomicinteger(1); private void count() { for (int i = 0; i < 4; i++) { thread thread = new thread(() -> { // 当前任务的计算结果,计算过程忽略 sheetbankwatercount.put(thread.currentthread().getname(), 1); // 计算完成,插入一个屏障 try { barrier.await(); } catch (interruptedexception e) { e.printstacktrace(); } catch (brokenbarrierexception e) { e.printstacktrace(); } }, "线程" + atomicinteger.getandincrement()); executor.execute(thread); } } @override public void run() { int result = 0; // 汇总每个任务计算出的结果 for (map.entry<string, integer> sheet : sheetbankwatercount.entryset()) { result += sheet.getvalue(); } //将结果输出 sheetbankwatercount.put("result", result); system.out.println(result); } public static void main(string[] args) { bankwaterservice bankwatercount = new bankwaterservice(); bankwatercount.count(); } }
public class semaphoretest { private static final int thread_count = 30; private static executorservice executor = executors.newfixedthreadpool(thread_count); private static semaphore semaphore = new semaphore(10); private static atomicinteger atomicinteger = new atomicinteger(1); public static void main(string[] args) { for (int i = 0; i < thread_count; i++) { executor.execute(() -> { try { semaphore.acquire(); system.out.println("save data" + atomicinteger.getandincrement()); semaphore.release(); } catch (interruptedexception e) { } }); } executor.shutdown(); } }
public class exchangertest { private static final exchanger<string> exchange = new exchanger<>(); private static executorservice threadpool = executors.newfixedthreadpool(2); public static void main(string[] args) { threadpool.execute(() -> { try { string result = exchange.exchange("数据a"); system.out.println("a的exchange结果:" + result); } catch (interruptedexception e) { } }); threadpool.execute(() -> { try { string result = exchange.exchange("数据b"); system.out.println("b的exchange结果:" + result); } catch (interruptedexception e) { } }); threadpool.shutdown(); } }
如对本文有疑问, 点击进行留言回复!!
springcloud中feign调用处理mybatis-plus Ipage反序列化问题。
Flume 史上最全面的大数据学习第十篇(一) 别再说不知道flume是什么了
网友评论