
多线程
文章平均质量分 90
zhangphil
zhangphil@live.com
展开
-
Kotlin读写分离CopyOnWriteArrayList
Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。线程的锁申请操作是阻塞的,于是造成线程T_A和线程T_B无法正确获得想要的锁,两个线程被阻塞进入死锁状态。Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。此方法返回一个线程容量为n的线程池。读时候快,写/删/改慢。原创 2023-08-10 23:44:01 · 921 阅读 · 0 评论 -
ReentrantLock替换synchronized解决多线程并发死锁,Java
Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。线程的锁申请操作是阻塞的,于是造成线程T_A和线程T_B无法正确获得想要的锁,两个线程被阻塞进入死锁状态。Java线程同步锁ReentrantLock和Condition中断等待程序前提条件满足_zhangphil的博客-优快云博客。原创 2022-11-01 23:20:20 · 513 阅读 · 0 评论 -
Semaphore替换多线程synchronized解决并发环境死锁,Java
新Java线程Semaphore:并行环境下访问竞争资源控制Semaphore是从Java 1.5引入的Java线程新内容。Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。线程的锁申请操作是阻塞的,于是造成线程T_A和线程T_B无法正确获得想要的锁,两个线程被阻塞进入死锁状态。新Java线程Semaphore:并行环境下访问竞争资源控制_zhangphil的博客-优快云博客。原创 2022-10-28 23:41:02 · 595 阅读 · 0 评论 -
Java多线程并发环境下的synchronized死锁实例
Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。线程的锁申请操作是阻塞的,于是造成线程T_A和线程T_B无法正确获得想要的锁,两个线程被阻塞进入死锁状态。原创 2022-10-26 23:36:50 · 766 阅读 · 0 评论 -
Java线程同步与阻塞ReentrantLock - Condition替换wait - notify
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;public class Main { private ReentrantLock lock = new ReentrantLock(false); private Condition con...原创 2019-07-17 23:17:34 · 663 阅读 · 0 评论 -
Java线程同步synchronized wait notifyAll
public class Main { public static void main(String[] args) { Main main = new Main(); main.test(); } private void test() { new Thread(new Runnable() { ...原创 2019-07-18 23:46:29 · 542 阅读 · 0 评论 -
Java多线程同步:为什么要引入volatile?
写一个简单代码:public class Main { private static boolean RUN = true; private static long n = 0L; public static void main(String[] args) { Main m = new Main(); m.test(); ...原创 2019-11-08 23:13:25 · 683 阅读 · 0 评论 -
RxJava的标准Java平台实现:Flow响应式编程
RxJava的标准Java平台实现:Flow响应式编程从Java 9开始,Java平台做了大幅度的框架性优化和调整,比如过去Java中的观察者模式标准实现java.util. Observable和java.util. Observer已被标注为废弃,建议开发者使用Java 9的Flow实现观察者模式以及RxJava那一套响应式编程。import java.util.concurre...原创 2019-11-04 23:41:58 · 1037 阅读 · 0 评论 -
Java线程同步栈Stack最新的LinkedBlockingDeque
Java线程同步栈Stack最新的LinkedBlockingDeque自Java 1.2开始,Java官方建议开发者不要使用Vector,为此受影响的还有Stack,因为Stack直接继承自Vector。尤其是,如果遇到线程同步栈的开发场景,可以考虑Java新式的BlockingDeque。BlockingDeque是一个双向的“队列”,它既可以作为FIFO的队列使用,也可以作为FILO的栈...原创 2019-06-27 23:33:06 · 1266 阅读 · 0 评论 -
Java DelayQueue线程同步的延迟队列
Java DelayQueue线程同步的延迟队列import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.DelayQueue;import java.util.concurrent.Delayed;import java.util.concurrent.TimeUnit;...原创 2019-08-12 23:06:17 · 733 阅读 · 0 评论 -
Java线程同步锁ReentrantLock和Condition中断等待程序前提条件满足
import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * ReentrantLock的lock和unlock必须成对使用且把需要同步的代码块包裹起来。 * lock-unlo...原创 2019-11-02 23:09:46 · 770 阅读 · 0 评论 -
Java线程同步可重入锁ReentrantLock与Condition
import java.util.LinkedList;import java.util.Queue;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;public class Main { private Queue<Integer>...原创 2019-06-29 23:35:46 · 784 阅读 · 0 评论 -
Java阻塞式线程同步队列BlockingQueue,SynchronousQueue和TransferQueue
Java阻塞式线程同步队列BlockingQueue,SynchronousQueue和TransferQueueBlockingQueue在队列读或取数据时候加锁。生产者向队列添加元素但队列已满时,生产者会被阻塞,反过来,当消费者从队列取出元素但队列为空时,消费者会被阻塞。BlockingQueue(和Queue)是Java 1.5加入的接口类,它是这样一种队列:当生产者向队列添加元素但队...原创 2019-07-02 23:17:01 · 1190 阅读 · 0 评论 -
Java线程安全的有序阻塞队列PriorityBlockingQueue
import java.util.Comparator;import java.util.Iterator;import java.util.concurrent.PriorityBlockingQueue;/** * PriorityQueue不是线程安全的。 * PriorityBlockingQueue是阻塞式的Java线程安全队列。 */public class Mai...原创 2019-08-27 23:30:25 · 2303 阅读 · 0 评论 -
Java线程同步阻塞队列LinkedTransferQueue
Java线程同步阻塞队列LinkedTransferQueueimport java.util.concurrent.LinkedTransferQueue;import java.util.concurrent.TimeUnit;/** * Java线程同步阻塞队列LinkedTransferQueue * * Java LinkedTransferQueue是Synchron...原创 2019-08-18 23:26:04 · 777 阅读 · 0 评论 -
CompletableFuture的runAsync
CompletableFuture的runAsyncCompletableFuture的runAsync只是简单的异步执行一个线程,但是它将返回一个CompletableFuture,有了这个CompletableFuture,可以重新组装和调配,这是和一个普通Runnable不同之处。CompletableFuture future = CompletableFuture.runAsync(ne...原创 2018-07-13 17:39:00 · 20692 阅读 · 3 评论 -
CompletableFuture的exceptionally
CompletableFuture的exceptionally代码:private void test() { System.out.println("开始..."); CompletableFuture.supplyAsync(new Supplier<String>() { @Override public String get()...原创 2018-07-12 10:08:08 · 13194 阅读 · 0 评论 -
CompletableFuture的thenCombineAsync
CompletableFuture的thenCombineAsync代码:private void test() { System.out.println("开始..."); CompletableFuture.supplyAsync(new Supplier<String>() { @Override public String ge...原创 2018-07-10 16:14:42 · 4146 阅读 · 0 评论 -
CompletableFuture的applyToEitherAsync:最快返回输出的线程结果作为下一次任务的输入
CompletableFuture的applyToEitherAsync:最快返回输出的线程结果作为下一次任务的输入applyToEitherAsync和附录1的acceptEitherAsync类似,只是说acceptEitherAsync是对结果的消费,而applyToEitherAsync则是把最快返回的计算输出结果,再利用起来作为下一次线程任务的输入。private void test()...原创 2018-07-02 15:23:48 · 3519 阅读 · 0 评论