![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
╭╯Erica
这个作者很懒,什么都没留下…
展开
-
java原子类:利用CAS自定义显示锁
/** * @Auther: Shen_hs * @Date: 2021/5/1 * @Description: 获取锁失败时的异常 */ public class GetThreadException extends Exception { public GetThreadException() { super(); } public GetThreadException(String message) { super(message)原创 2021-05-02 12:17:13 · 101 阅读 · 0 评论 -
java:原子类 CAS算法 ABA问题的解决方式
java原子类,CAS算法可能导致ABA问题,而AtomicStampedReference类很好的解决了这一问题,解决思想类似于数据库的**乐观锁,**加一个version版本号,每次更新数据的同时会修改版本号,另外的线程在修改时会拿着之前的版本号和现在的版本号对比,不一致就无法修改。 /** * @Auther: Shen_hs * @Date: 2021/5/1 * @Description: AtomicStampReference 解决CAS的 ABA问题(类似于 数据库的乐观锁 加一个.原创 2021-05-02 11:33:57 · 270 阅读 · 0 评论 -
java多线程:Thread-Per-Message设计模式
Thread-Per-Message设计模式:为每个请求过来的message安排一个线程去处理,建议用线程池,代码如下: public class Message { private final String value; public Message(String value) { this.value = value; } public String getValue() { return value; } } //====.原创 2021-04-21 13:11:04 · 68 阅读 · 0 评论 -
java多线程:countDownLatch
多线程模式下,要控制线程执行顺序之前可以用join()方式,现在也可以用 countDownLatch(闭锁),A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.(一种同步辅助,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。) public class JDKCountDown .原创 2021-04-21 11:49:38 · 81 阅读 · 0 评论 -
java多线程:生产者消费者设计模式
public class Message { private String data; public Message(String data) { this.data = data; } public String getData() { return data; } } //==================================== public class MessageQueue { //任务队列 pr原创 2021-04-16 18:34:15 · 74 阅读 · 0 评论 -
java多线程:balking设计模式
一个线程要去执行某个操作。但是,在发现这个操作已经被别的线程做了,于是,就没有必要再去做这样的一个操作了。面对这种问题的设计方案是多线程设计模式中的Balking模式。 /*************************************** Data类 ***************************************/ public class BalkingData { private final String fileName; private St.原创 2021-04-16 17:50:51 · 86 阅读 · 0 评论 -
java多线程:上下文切换设计模式
/** * 线程运行上下文设计模式 * 上下文 */ @Data public class Context { private String name; private String cardId; } /** * 线程运行上下文设计模式 * 从数据库查询数据 */ public class QueryFromDbAction { public void execute(Context context) { try { Threa原创 2021-04-16 13:41:41 · 254 阅读 · 0 评论 -
java多线程:模拟ThreadLocal
ThreadLocal存储的变量,同一线程下可见,不同线程不可见 package com.tuyrk.chapter10; import java.util.HashMap; import java.util.Map; /** * 模拟ThreadLocal * */ public class ThreadLocalSimulator<T> { private final Map<Thread, T> storage = new HashMap<>(.原创 2021-04-15 12:26:14 · 162 阅读 · 0 评论 -
java多线程Future设计模式
/** * Future设计模式 * 调用者线程A调用任务执行线程B的时候,首先线程B返回一个Future类,然后线程A通过get()方法获取执行结果 */ @FunctionalInterface public interface Future<T> { /** * 返回任务执行线程的执行结果 * * @return 任务执行线程的执行结果 * @throws InterruptedException 方法异常 */ T原创 2021-04-13 22:39:06 · 95 阅读 · 0 评论 -
java自定义读写锁
自定义读写锁,读操作允许并行化,但是一旦有写操作就串行化 /** * 读写锁分离,共享数据 */ public class SharedData { private final char[] buffer; private final ReadWriteLock lock = new ReadWriteLock(); public SharedData(int size) { this.buffer = new char[size]; Arr.原创 2021-04-13 00:34:41 · 184 阅读 · 0 评论