![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Concurrent
文章平均质量分 90
Agile牧
最重要的,拥有跟随内心与直觉的勇气,你的内心与直觉多少已经知道你真正想要成为什么样的人。任何其它事物都是次要的。
展开
-
Concurrent - Semaphore - Semaphore(int permits)
原创 2016-12-05 15:33:27 · 123 阅读 · 0 评论 -
Concurrent - Phaser - 操纵Parties的常用API
原创 2016-12-13 12:27:42 · 120 阅读 · 0 评论 -
Concurrent - Phaser - arrive()
计数重置功能PhaserTest8.javapackage org.fool.java.concurrent.phaser;import java.util.concurrent.Phaser;public class PhaserTest8 { public static void main(String[] args) { Phaser phaser = new Phaser(2) { @Override原创 2016-12-13 13:17:22 · 139 阅读 · 0 评论 -
Concurrent - Phaser - awaitAdvance & awaitAdvanceInterruptibly
原创 2016-12-13 14:53:51 · 162 阅读 · 0 评论 -
Concurrent - Phaser - forceTermination() & isTerminated()
的作用是判断Phaser对象是否已经呈销毁状态 PhaserTest18.javapackage org.fool.java.concurrent.phaser;import java.util.concurrent.Phaser;public class PhaserTest18 { public static class ThreadA implements Runnable { private Phaser phaser;原创 2016-12-14 10:11:43 · 113 阅读 · 0 评论 -
Concurrent - 多线程
allable接口线程池ThreadPoolExecutorNote:Callable接口和Runnable接口区别Callable接口的call()方法可以返回值,而Runnable接口的run()方法没有返回值Callable接口的call()方法可以声明抛出异常,而Runnable接口的run()方法不可以声明抛出异常类ThreadPoolExecutor可以非常方便地创建线程池对象,而不需要程序员设计大量的new实例化Thread相关的代码 如何停止一个正在运行原创 2017-02-13 15:32:13 · 102 阅读 · 0 评论 -
Concurrent - 锁
原创 2017-02-13 21:02:49 · 85 阅读 · 0 评论 -
Concurrent - 并发框架
ConcurrentHashMap锁的是段... /** * Maps the specified key to the specified value in this table. * Neither the key nor the value can be null. * * <p>The value can be retrieved by calling the {@code get} metho原创 2017-02-13 21:06:03 · 104 阅读 · 0 评论 -
Concurrent - 线程安全
原创 2017-02-13 21:23:33 · 60 阅读 · 0 评论 -
Java多线程状态切换
原创 2017-03-02 14:58:59 · 85 阅读 · 0 评论 -
interrupted()和isInterrupted()的区别
停止线程package org.fool.java.concurrent.interrupt;public class InterruptTest1 { public static void main(String[] args) { try { Thread thread = new Thread(new MyThread()); thread.start(); Thread.slee原创 2017-03-02 16:29:16 · 118 阅读 · 0 评论 -
Java中volatile如何保证long和double的原子性操作
同一个实例变量需要加锁进行同步。package org.fool.java.concurrent.volatiletest;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class VolatileTest1 { private static volatile int count = 0; private static voi原创 2017-03-02 23:05:08 · 474 阅读 · 0 评论 -
Concurrent - 线程池
将抛出运行时 RejectedExecutionException。 (2)ThreadPoolExecutor.CallerRunsPolicy策略 ,调用者的线程会执行该任务,如果执行器已关闭,则丢弃. (3)ThreadPoolExecutor.DiscardPolicy策略,不能执行的任务将被丢弃. (4)ThreadPoolExecutor.DiscardOldestPolicy策略,如果执行程序尚未关闭,则位于工作队列头部的任务将被删除,然后重试执行程序(如果再次失败,则重复此过程)原创 2017-08-23 16:24:58 · 82 阅读 · 0 评论 -
Runtime.getRuntime().addShutdownHook用法
ng[] args) { Thread thread1 = new Thread(() -> System.out.println("Thread1...")); Thread thread2 = new Thread(() -> System.out.println("Thread2...")); Thread thread3 = new Thread(() -> Sys原创 2017-10-11 16:11:00 · 91 阅读 · 0 评论 -
CompletableFuture - Hello World
rt java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutionException;public class CompletableFutureTest0 { private final static Random RANDOM = new Random(System.currentTimeMillis()); public static void main(String[]原创 2018-07-17 23:27:57 · 151 阅读 · 0 评论 -
CompletableFuture - 常用API(上)
rt java.util.Random;import java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.stream.Stream;import static ja原创 2018-07-25 21:21:18 · 143 阅读 · 0 评论 -
Concurrent - Phaser - getPhase() & onAdvance(int phase, int registeredParties)
r;import java.util.concurrent.Phaser;public class PhaserTest4 { public static class MyThread implements Runnable { private Phaser phaser; public MyThread(Phaser phaser) { this.phaser = phaser; }原创 2016-12-13 11:50:58 · 151 阅读 · 0 评论 -
Concurrent - Phaser - arriveAndAwaitAdvance() & arriveAndDeregister()
原创 2016-12-13 10:27:54 · 169 阅读 · 0 评论 -
Concurrent - CyclicBarrier
原创 2016-12-09 14:26:27 · 81 阅读 · 0 评论 -
Concurrent - Semaphore - acquire(int permits)
e org.fool.java.concurrent.semaphore.acquire;import java.util.concurrent.Semaphore;public class Service { private Semaphore semaphore = new Semaphore(10); public void testMethod() { try { semaphore.acquire(2);原创 2016-12-05 16:29:59 · 109 阅读 · 0 评论 -
Concurrent - Semaphore - acquireUninterruptibly()
还有重载的方法acquireUninterruptibly(int permits),此方法的作用是在等待permits的情况下不允许被中断,如果成功获得锁,则取得指定permits的个数。 Service.java package org.fool.java.concurrent.semaphore.acquireuninterruptibly;import java.util.concurrent.Semaphore;public class Service {原创 2016-12-05 17:10:16 · 398 阅读 · 0 评论 -
Concurrent - Semaphore - availablePermits() & drainPermits()
有permits个数,并将可用permits置为0 AvailablePermitsTest.javapackage org.fool.java.concurrent.semaphore.availabledrainpermits;import java.util.concurrent.Semaphore;public class AvailablePermitsTest { public static void main(String[] args) {原创 2016-12-06 10:05:00 · 234 阅读 · 0 评论 -
Concurrent - Semaphore - getQueueLength() & hasQueuedThreads()
its这两个方法通常都是在判断当前有没有等待permits的线程信息时使用Service.javapackage org.fool.java.concurrent.semaphore.queue;import java.util.concurrent.Semaphore;public class Service { private Semaphore semaphore = new Semaphore(1); public void testMethod(原创 2016-12-06 10:57:08 · 120 阅读 · 0 评论 -
Concurrent - Semaphore - tryAcquire
原创 2016-12-06 14:17:02 · 199 阅读 · 0 评论 -
Concurrent - Semaphore - Async & Sync
re;public class Service { private Semaphore semaphore = new Semaphore(3); public void testMethod() { try { semaphore.acquire(); System.out.println(Thread.currentThread().getName() + " start");原创 2016-12-06 15:39:46 · 91 阅读 · 0 评论 -
Concurrent - Producer & Consumer
l.Queue;import java.util.Random;import java.util.concurrent.ConcurrentLinkedDeque;public class WaitNotifyTest { public static void main(String[] args) { Queue<Integer> queue = new ConcurrentLinkedDeque<>(); Thr原创 2016-12-06 17:15:59 · 109 阅读 · 0 评论 -
Concurrent - Exchanger - exchanger()
程来取数据,如果没有其他线程来取数据,则一直阻塞等待。ThreadA.javapackage org.fool.java.concurrent.exchange;import java.util.concurrent.Exchanger;public class ThreadA implements Runnable { private Exchanger<String> exchanger; public ThreadA(Ex原创 2016-12-07 09:25:14 · 105 阅读 · 0 评论 -
Concurrent - Executors - newCachedThreadPool()
界线程池”就是池中存放线程个数是理论上的Integer.MAX_VALUE最大值。 ExecutorTest1.javapackage org.fool.java.concurrent.executor;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ExecutorTest1 { public static void mai原创 2016-12-07 14:35:55 · 126 阅读 · 0 评论 -
Concurrent - Executors - newFixedThreadPool(int nThreads)
最大数量。 MyThread.javapackage org.fool.java.concurrent.executor.fixed;public class MyThread implements Runnable { private String name; public MyThread(String name) { this.name = name; } @Override public void原创 2016-12-07 15:16:01 · 110 阅读 · 0 评论 -
Concurrent - Executors - newSingleThreadExecutor()
原创 2016-12-07 15:40:00 · 86 阅读 · 0 评论 -
Concurrent - Future & Callable
接口的call()方法可以有返回值,而Runnable接口的run()方法没有返回值Callable接口的call()方法可以声明抛出异常,而Runnable接口的run()方法不可以声明抛出异常。执行完Callable接口中的任务后,返回值是通过Future接口进行获得的。 ExecutorService get()结合submit(Callable<T> task)MyCallable.javapackage org.fool.java.con原创 2016-12-07 17:00:13 · 68 阅读 · 0 评论 -
Concurrent - execute() & submit()
eadFactory的方式进行捕获 submit()submit()有返回值,在默认的情况下,可以catch ExecutionException捕获异常 execute无返回值,submit有返回值FutureCallableTest7.java package org.fool.java.concurrent.futurecallable;import java.util.concurrent.*;public class FutureCallableTe原创 2016-12-08 13:06:29 · 137 阅读 · 0 评论 -
Concurrent - CompletionService
以将执行任务与处理任务分离开来进行处理。使用submit()执行任务,使用take()取得已完成的任务,并按照完成这些任务的时间顺序处理它们的结果。这样就可以很好的解决Future接口的get()方法的阻塞特性带来的性能问题。Future的缺点MyCallable.javapackage org.fool.java.concurrent.completionservice;import java.util.concurrent.Callable;public class MyC原创 2016-12-08 15:24:01 · 117 阅读 · 0 评论 -
Concurrent - CountDownLatch
it()的作用是实现等待,判断计数是否为0,如果不为0则呈等待状态。countDown()的作用是继续运行,其他线程可以调用此方法将计数减1,当计数减到为0时,呈等待的线程继续运行。getCount()的作用是获得当前的计数个数。 用CountDownLatch模拟一个田径短跑的例子,10个线程代表10名选手MyThread.javapackage org.fool.java.concurrent.countdownlatch;import java.util.concurr原创 2016-12-09 11:05:56 · 101 阅读 · 0 评论 -
CompletableFuture - 常用API( 下)
read.currentThread().getName() + " is running"); return 1; }).runAfterBoth(CompletableFuture.supplyAsync(() -> { System.out.println(Thread.currentThread().getName() + " is running"); return 2; }), () -> System原创 2018-07-25 22:03:16 · 174 阅读 · 0 评论