![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
vickyhwj
这个作者很懒,什么都没留下…
展开
-
读写锁aqs
加锁https://www.cnblogs.com/zzq6032010/p/12037854.html释放锁https://www.cnblogs.com/zzq6032010/p/12076580.htm原创 2021-04-08 21:48:25 · 108 阅读 · 0 评论 -
延时队列DelayQueue
public boolean offer(E e) { final ReentrantLock lock = this.lock; lock.lock(); try { q.offer(e); if (q.peek() == e) { leader = null; available.signal(); } .原创 2021-02-20 14:48:13 · 129 阅读 · 0 评论 -
限流
用Semaphore限流可以理解为某个时间点限流,控制并发,但是信号量主要存在一个比较明显的问题:在达到permit上限前,系统的 qps 上升是毫无阻力的,瞬间的 qps 可以达到极大值。用令牌桶算法限流的话,一个请求过来时,他是往桶里添加令牌(currentTime-lastRefreshTime)*(一秒生成的令牌数),然后请求消耗一个令牌,他是在一段时间内按比例折算添加对应数量的令牌,semaphore可以理解为一下子生成所有的令牌的放满桶里,这样的话瞬间的 qps 可以达到极大值。http原创 2021-02-09 19:40:16 · 72 阅读 · 0 评论 -
Semaphore的一个坑
public class StaticWork { public static Semaphore semaphore=new Semaphore(7); public static void main(String[] args) throws InterruptedException { Semaphore semaphore=new Semaphore(7,true){}; new Thread(new MyRun(3,2000),"3").star.原创 2021-02-05 14:26:38 · 183 阅读 · 0 评论 -
Atomicstampedreference的使用(如何解决aba问题)
Atomicstampedreference的使用(如何解决aba问题)public class AtomicstampedreferenceTest { public static void main(String[] args){ AtomicStampedReference<Integer> reference=new AtomicStampedReference<>(1,1); new Thread(new Runnable().原创 2021-02-03 22:35:12 · 413 阅读 · 0 评论 -
24点 spark版本
package wordcount.spark;import org.apache.spark.Accumulator;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.api.java.function.VoidFunction;import j.原创 2020-07-19 11:08:00 · 115 阅读 · 0 评论 -
多线程模拟选举
package com.activiti6.cmd;import java.util.*;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.locks.ReentrantLock;/** * n个线程进行选举,当个线程成为master之后结束线程,然后n-1个线程继续选举。。。。。 */pub.原创 2020-06-30 10:47:22 · 275 阅读 · 0 评论 -
Spring AOP事务的一个坑
一开始以为在service层的方法那里synchronized,就可以控制并发 @Override public synchronized void test(Long id){ ProductSample productSample= (ProductSample) baseDao.get(new ProductSample(id)); if(productSample.g...原创 2019-01-02 17:02:59 · 395 阅读 · 0 评论 -
exists真的就比in的效率高吗?
分析一下exists真的就比in的效率高吗? 我们先讨论IN和EXISTS。 select * from t1 where x in ( select y from t2 ) 事实上可以理解为: select * from t1, ( select distinct y from t2 ) t2 wher转载 2017-11-16 15:38:38 · 1330 阅读 · 0 评论 -
volatile的个人简单见解
volatile boolean inited = false; //线程1: context=loadContext(); inited=true; //线程2: while(!inited ){ sleep(); } doSomethingwithconfig(context); 若inited没有用volatile修饰,co转载 2017-11-18 17:28:58 · 168 阅读 · 0 评论 -
多线程模拟停车
假设车库有3个车位,写一个程序模拟多个用户开车离开,停车入库的效果。import java.util.Random;import java.util.concurrent.Executor;import java.util.concurrent.Executors;public class Main { public static void main(String[] args)原创 2017-11-13 18:48:43 · 1165 阅读 · 0 评论 -
死锁简单例子
//死锁最简单例子,互相等待释放锁public class DeadLockTest { public static void main(String[] args) { // TODO Auto-generated method stub final Object lock1=new Object(),lock2=new Object(); new Thread(new Run原创 2017-11-06 19:29:33 · 893 阅读 · 0 评论 -
JAVA同步之ReentrantLock可中断锁的使用
http://www.iteedu.com/plang/java/superjava/threadsafe/lockInterruptibly.php以前我们用synchronized (mutex) {。。。。。。。 }进行同步时必须等待别的线程释放锁后才能进入同步块,现在问题时当太长时间等待时不想再等了,怎么办?ReentrantLock为我们实现了中断等待转载 2017-11-06 20:03:15 · 2809 阅读 · 0 评论 -
ReentrantLock实现abc循环输出
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ReetlockABC { public static void main(String[] arg原创 2017-11-06 20:36:21 · 576 阅读 · 0 评论 -
对信号量Semaphore的理解与运用
http://ifeve.com/tag/semaphore/http://www.cnblogs.com/XHJT/p/3910406.html转载 2017-11-06 21:52:28 · 462 阅读 · 0 评论 -
探索 ConcurrentHashMap 高并发性的实现机制
https://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/index.html转载 2017-11-09 12:07:30 · 130 阅读 · 0 评论 -
双重检查锁定(Double-checked locking)与延迟初始化(Initialization on demand holder)
http://blog.csdn.net/changqing5818/article/details/60329006转载 2017-11-09 19:19:56 · 126 阅读 · 0 评论 -
CountDownLatch、CyclicBarrier和Semaphore
http://www.cnblogs.com/dolphin0520/p/3920397.html转载 2017-11-10 19:09:15 · 116 阅读 · 0 评论 -
为何不用stop()和如何终止线程
为什么不用stop()http://www.cnblogs.com/greta/p/5624839.htmlhttp://yeziwang.iteye.com/blog/844649stop会在任何时刻抛出ThreadDeath异常并且释放了它所占有的锁,而此时程序猿没做任何准备多数用synchronized (lock) {if(stop)return;.转载 2017-10-26 17:59:52 · 935 阅读 · 0 评论 -
交替输出
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOEx原创 2017-10-27 00:19:23 · 338 阅读 · 0 评论