随笔分类 -  多线程

摘要:public class CompletableFuture3 { public static void main(String[] args) throws ExecutionException, InterruptedException { // testJoin(); testCompleta 阅读全文
posted @ 2019-12-14 11:40 踏月而来 阅读(169) 评论(0) 推荐(0)
摘要:public class CompletableFuture2 { public static void main(String[] args) throws InterruptedException { // thenAcceptBoth(); // acceptEither(); // runA 阅读全文
posted @ 2019-12-12 23:06 踏月而来 阅读(139) 评论(0) 推荐(0)
摘要:public class CompletableFutureTest { public static void main(String[] args) throws Exception { test5(); } /** * whenCompleteAsync指的是异步执行传入的BiConsumer 阅读全文
posted @ 2019-12-10 23:48 踏月而来 阅读(1084) 评论(0) 推荐(0)
摘要:public class CompletableServiceTest { public static void main(String[] args) throws ExecutionException, InterruptedException { // test1(); // test2(); 阅读全文
posted @ 2019-11-26 23:43 踏月而来 阅读(710) 评论(0) 推荐(0)
摘要:Futrue的缺点有(1)get方法会阻塞 ,(2)不支持注册回调方法 ,(3)不支持级联操作 CompletableFuture弥补了这些缺点 public class CompletableFutureTest { public static void main(String[] args) t 阅读全文
posted @ 2019-11-25 16:36 踏月而来 阅读(520) 评论(0) 推荐(0)
摘要:ScheduledThreadPoolExecutor可以代替timer,timer的缺点是一个timer启动一个线程,如果任务数量很多,会创建很多线程,不推荐使用。 ScheduledThreadPoolExecutor他有个线程池管理线程管理所有任务,效率更高 public class Sche 阅读全文
posted @ 2019-11-23 12:04 踏月而来 阅读(1847) 评论(0) 推荐(0)
摘要:/** * CyclicBarrier 一组线程相互等待 */ public class Beer { public static void main(String[] args) { final int count = 5; final CyclicBarrier barrier = new Cy 阅读全文
posted @ 2019-11-20 17:47 踏月而来 阅读(120) 评论(0) 推荐(0)
摘要:/** * 模拟铁人三项 */ public class PhaserTest { private static Random random = new Random(System.currentTimeMillis()); public static void main(String[] args 阅读全文
posted @ 2019-11-20 17:05 踏月而来 阅读(120) 评论(0) 推荐(0)
摘要:/** * 可用用phaser模拟countDownLatch * awaitAdvance方法:如果传入的参数和当前的phase相等,线程就阻塞住等待phase的值增加;否则就立即返回 */ public class PhaserTest2 { private static Random rand 阅读全文
posted @ 2019-11-19 23:05 踏月而来 阅读(214) 评论(0) 推荐(0)
摘要:Fork/Join框架:在必要的情况下,将一个大任务,进行拆分(fork) 成若干个子任务(拆到不能再拆,这里就是指我们制定的拆分的临界值),再将一个个小任务的结果进行join汇总。 采用juc包的fork/join框架 public class ForkJoinWork extends Recur 阅读全文
posted @ 2019-11-19 17:18 踏月而来 阅读(231) 评论(0) 推荐(0)
摘要:publicclass RWDictionary { private final Map<String, String> m = new TreeMap<String, String>(); private final ReentrantReadWriteLock rwl = new Reentra 阅读全文
posted @ 2019-11-18 16:44 踏月而来 阅读(151) 评论(0) 推荐(0)
摘要:(1)StampedLock邮戳锁支持三种模式,分别是:写锁,读锁,乐观读。 ReentrantReadWriteLock读写锁的缺点是在读多写少的情况下,写线程会被阻塞,写线程可能会一直抢不到锁发生饥饿现象 邮戳锁可以避免这种情况,在乐观读的时候,不会对其他的写线程阻塞,其他的线程可以获取到写锁 阅读全文
posted @ 2019-11-18 16:16 踏月而来 阅读(497) 评论(0) 推荐(0)
摘要:public class SemaphoreTest { //信号量,只允许 3个线程同时访问 private static Semaphore semaphore = new Semaphore(3); public static void main(String[] args) { Execut 阅读全文
posted @ 2019-11-18 10:05 踏月而来 阅读(303) 评论(0) 推荐(0)
摘要:exchanger用于两个线程交换数据 /** * 两个线程交换数据,A线程发送数据给B线程,B线程接受的数据和A发送的数据是同一个对象 * A will send the Object java.lang.Object@6e22e576 * B will send the Object java. 阅读全文
posted @ 2019-11-17 23:17 踏月而来 阅读(242) 评论(0) 推荐(0)
摘要:一个生产者和一个消费者 public class ConditionTest { private static ReentrantLock lock = new ReentrantLock(); private static Condition condition = lock.newConditi 阅读全文
posted @ 2019-11-17 23:14 踏月而来 阅读(375) 评论(0) 推荐(0)
摘要:/** * 这里只是将Semaphore包装了一下,注意当Semaphore的构造参数是1时,本身就是一个显示锁 */ public class SemaphoreLock { private final Semaphore semaphore = new Semaphore(1); public 阅读全文
posted @ 2019-11-17 15:53 踏月而来 阅读(299) 评论(0) 推荐(0)
摘要:有一个大小为50000的数组,要求开启5个线程分别计算10000个元素的和,然后累加得到总和 /** * 开启5个线程进行计算,最后所有的线程都计算完了再统计计算结果 */ public class Test5 { private static Random random = new Random( 阅读全文
posted @ 2019-11-16 11:24 踏月而来 阅读(593) 评论(0) 推荐(0)
摘要:CountDownLatch复杂点的例子 public class CountDownLatchTest2 { private static Random random = new Random(System.currentTimeMillis()); static class Event { in 阅读全文
posted @ 2019-11-14 23:59 踏月而来 阅读(226) 评论(0) 推荐(0)
摘要:CountdownLatch 一个线程或者多个线程等待其他线程完成了再接着往下执行 public class CountDownLatchTest { private static ExecutorService executorService = Executors.newFixedThreadP 阅读全文
posted @ 2019-11-12 23:13 踏月而来 阅读(537) 评论(0) 推荐(0)
摘要:Java和C++语言的一个重要区别就是Java中我们无法直接操作一块内存区域,不能像C++中那样可以自己申请内存和释放内存。Java中的Unsafe类为我们提供了类似C++手动管理内存的能力,不建议使用该类 (1)Unsafe对int,long ,Object的CAS操作 public class 阅读全文
posted @ 2019-11-10 11:47 踏月而来 阅读(514) 评论(0) 推荐(0)