JAVA并发
JAVA道人
我宁愿做错,也不愿什么都不做.
展开
-
ThreadPoolExcuter的queue测试
ThreadPoolExcuter的queue测试 import java.util.concurrent.BlockingQueue; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class ThreadTest { public static void mai原创 2021-09-25 16:24:43 · 161 阅读 · 0 评论 -
guava的令牌桶
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency> filed: public static final int REQUEST..原创 2021-05-06 15:34:08 · 499 阅读 · 0 评论 -
有 3 个独立的线程,一个只会输出 A,一个只会输出 L,一个只会输出 I。 在三个线程同时启动的情况下,请用合理的方式让他们按顺序打印 ALIALI。
private static void m5_1() throws InterruptedException { int i = 0; Thread thread1 = new Thread(new Runnable() { @Override public void run() { while (true) { LockSupport.park(); System.out.println(1); } } }); Thread thre原创 2021-04-23 15:26:40 · 367 阅读 · 0 评论 -
java的lock
/** * 同一个lock,同一把锁 */ Lock lock = new ReentrantLock(); /** * * 串行执行,相当于syn */ public void aaa() { lock.lock(); try { Thread.sleep(3000); } catch (InterruptedException e) { /...原创 2019-10-18 22:23:56 · 166 阅读 · 2 评论 -
ThreadPoolExecutor的构造方法
int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory 一般来说,要使用这个构造方法。 corePoolSize:核心线程数 maximumPoolSize...原创 2019-07-02 16:45:36 · 197 阅读 · 0 评论 -
java并发:volatile关键字
内容学习自:https://www.cnblogs.com/dolphin0520/p/3920373.html 计算机缓存一致性 每核cpu在执行指令时,都会将数据从主存中读取,然后在自身的高速缓存中操作修改,最后刷新到主存中. 但有个问题,如果此时主存有个变量 i = 0; 两个cpu线程紧挨着先后执行下面的代码; i = i + 1; 可能会出现这个情况:线程1和线程 2...原创 2019-07-02 16:27:24 · 116 阅读 · 0 评论 -
java并发:CAS
copare and swap 翻译下来就是比较并转换。 应用环境: 当去修改内存中某个值时,有三个参数条件。 V A B V是代表此刻内存地址存值。 A是代表此刻内存地址应该有的值 。 B 是新值,即将要赋予的值。 原理:如下代码。 public boolean setNew(){ if (v.value == A){ v.value = B ...原创 2019-07-02 16:27:32 · 108 阅读 · 0 评论 -
java并发:AQS独占锁源码详解
说明: AQS是并发包的基石。它有两种模式:独占模式和共享模式。本篇只说独占模式。 什么是独占模式?就相当于lock的锁只有一把,一条线程占用,其他线程就得处于BLOCK或者WAIT状态。 在AQS里,获取的方法就是: Acquire() public final void acquire(int arg) { if (!tryAcquire(arg) &&a...原创 2019-07-02 16:26:58 · 119 阅读 · 0 评论 -
java并发:LockSupport
一个好用的东西.阻塞和释放线程用的. 先看代码: public static void aaa() { System.out.println("阻塞开始"); LockSupport.park(); System.out.println("111"); } park()就是执行线程一直阻塞,111根本不会执行. 再看这个代码: public static vo...原创 2019-07-02 16:27:04 · 106 阅读 · 0 评论 -
java并发:线程中断
一共三个方法. Thread.interrupt();//就是尝试中断本线程.将添加中断标志 Thread.isInterrupted();//查看本线程的中断标志,代表是否被中断. Thread.static.interrupted();//静态方法,尝试中断本线程,但是中断标志会被清除. 看如下两段代码: private void aaa() throws Interrupt...原创 2019-07-02 16:27:12 · 174 阅读 · 0 评论 -
java并发:线程的六种状态
package thread; public class Test { /** * 新创建的线程. */ public void NEW(){ Thread thread = new Thread(); System.out.println(thread.getState());//NEW } /** * 正在运行的线程.但是处理器不一定会执行此线程.它现在可能在争...原创 2019-07-02 16:27:18 · 129 阅读 · 0 评论