并发编程
╭╯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 · 138 阅读 · 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 · 290 阅读 · 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 · 103 阅读 · 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 · 122 阅读 · 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 · 91 阅读 · 0 评论 -
java多线程:balking设计模式
一个线程要去执行某个操作。但是,在发现这个操作已经被别的线程做了,于是,就没有必要再去做这样的一个操作了。面对这种问题的设计方案是多线程设计模式中的Balking模式。/*************************************** Data类 ***************************************/public class BalkingData { private final String fileName; private St.原创 2021-04-16 17:50:51 · 142 阅读 · 0 评论 -
java多线程:上下文切换设计模式
/** * 线程运行上下文设计模式 * 上下文 */@Datapublic class Context { private String name; private String cardId;}/** * 线程运行上下文设计模式 * 从数据库查询数据 */public class QueryFromDbAction { public void execute(Context context) { try { Threa原创 2021-04-16 13:41:41 · 290 阅读 · 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 · 197 阅读 · 0 评论 -
java多线程Future设计模式
/** * Future设计模式 * 调用者线程A调用任务执行线程B的时候,首先线程B返回一个Future类,然后线程A通过get()方法获取执行结果 */@FunctionalInterfacepublic interface Future<T> { /** * 返回任务执行线程的执行结果 * * @return 任务执行线程的执行结果 * @throws InterruptedException 方法异常 */ T原创 2021-04-13 22:39:06 · 134 阅读 · 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 · 230 阅读 · 0 评论