![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程与高并发
请叫我自由哥
这个作者很懒,什么都没留下…
展开
-
线程池大类之WorkStealingPool
线程池大类之WorkStealingPoolpackage src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/6 */import java.io.IOException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.ut...原创 2021-02-06 08:00:53 · 171 阅读 · 0 评论 -
线程池之定时任务线程池ScheduledPool
线程池之ScheduledPoolpackage src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/6 */import java.util.Random;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExec...原创 2021-02-06 06:10:53 · 712 阅读 · 0 评论 -
线程池之固定大小线程池FixedThreadPool
线程池之FixedThreadPoolpackage src.main.java.com.qqjx.thread;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import ja...原创 2021-02-05 08:39:58 · 427 阅读 · 0 评论 -
线程池之CachedPool
线程池之CachedPoolpackage src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/4 */import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.co...原创 2021-02-04 21:57:44 · 161 阅读 · 0 评论 -
线程池之只有一个线程的线程池SingleThreadPool
线程池之SingleThreadPoolpackage src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/4 */import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class T07_SingleThreadPool { public stati...原创 2021-02-04 21:43:07 · 1606 阅读 · 0 评论 -
自定义线程池(线程池7个参数)
自定义线程池(线程池7个参数)package src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/4 */import java.io.IOException;import java.util.concurrent.*;public class T05_00_HelloThreadPool { static...原创 2021-02-04 08:40:01 · 713 阅读 · 0 评论 -
线程池总述
线程池总述/* * @Auther wangpeng * @Date 2021/2/4 */public class T05_ThreadPool { public static void main(String[] args) { /* * 线程池总述: * 1 ThreadPoolExecutor * 2 ForkJoinPool *...原创 2021-02-04 08:07:38 · 111 阅读 · 0 评论 -
线程池相关接口和类Callable
线程池相关接口和类Callablepackage src.main.java.com.qqjx.thread;/*/** * 认识Callable,对Runnable进行了扩展 * 对Callable的调用,可以有返回值 * @Auther wangpeng * @Date 2021/2/4 */import java.util.concurrent.*;public class T03_Calla...原创 2021-02-04 06:57:48 · 92 阅读 · 0 评论 -
线程池相关接口和类Future
Futurepackage src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/3 */import java.util.concurrent.*;public class T06_00_Future { public static void main(String[] args) throws...原创 2021-02-03 08:47:10 · 50 阅读 · 0 评论 -
华为多线程面试题解法四(CAS自旋)
华为多线程面试题解法四(CAS自旋)package src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/2 */public class T03_00_cas { enum ReadyToRun {T1, T2} static volatile ReadyToRun r = ReadyToRun.T1; //思考为什么必须volatile public ...原创 2021-02-02 19:37:40 · 80 阅读 · 0 评论 -
华为多线程面试题解法三(Condition)
华为多线程面试题解法三(Condition)package src.main.java.com.qqjx.thread;/* * Condition本质是锁资源上不同的等待队列 * @Auther wangpeng * @Date 2021/2/2 */import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concu...原创 2021-02-02 08:52:48 · 175 阅读 · 2 评论 -
华为多线程面试题解法二(sync_wait_notify)
华为多线程面试题解法二(sync_wait_notify)package src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/2 */public class T06_00_sync_wait_notify { public static void main(String[] args) { final Object o = new Object(); ...原创 2021-02-02 08:06:42 · 198 阅读 · 1 评论 -
华为多线程面试题解法一(LockSupport)
华为多线程面试题解法一(LockSupport)package src.main.java.com.qqjx.thread;import java.util.concurrent.locks.LockSupport;/* * @Auther wangpeng * @Date 2021/2/2 *///LockSupport park 当前线程阻塞(停止)// unpark(Thread t)public c...原创 2021-02-02 07:53:16 · 164 阅读 · 0 评论 -
华为多线程面试题
华为多线程面试题package src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/2 */public class T01_00_Question { public static void main(String[] args) { //要求用线程顺序打印A1B2C3....Z26 }}...原创 2021-02-02 06:52:31 · 180 阅读 · 0 评论 -
TransferQueue
TransferQueuepackage src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/2 */import java.util.concurrent.LinkedTransferQueue; //Transfer 传递 TransferQueue 传递队列public cl...原创 2021-02-02 06:44:52 · 133 阅读 · 1 评论 -
SynchronousQueue
SynchronousQueuepackage src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/1 */import java.util.concurrent.BlockingQueue;import java.util.concurrent.SynchronousQueue;//线程间交换数据pub...原创 2021-02-01 22:03:44 · 139 阅读 · 1 评论 -
PriorityQueque
PriorityQuequepackage src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/1 */import java.util.PriorityQueue;public class T07_01_PriorityQueque { public static void main(S...原创 2021-02-01 21:50:27 · 81 阅读 · 1 评论 -
DelayQueue
DelayQueuepackage src.main.java.com.qqjx.thread;import java.util.Calendar;import java.util.Random;import java.util.concurrent.BlockingQueue;import java.util.concurrent.DelayQueue;import java.util.c...原创 2021-02-01 21:14:20 · 37 阅读 · 0 评论 -
ArrayBlockingQueue
ArrayBlockingQueuepackage src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/1 */import java.util.Random;import java.util.concurrent.ArrayBlockingQueue;import java.util.con...原创 2021-02-01 20:51:27 · 80 阅读 · 0 评论 -
LinkedBlockingQueue
LinkedBlockingQueuepackage src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/2/1 */import java.util.Random;import java.util.concurrent.BlockingQueue;import java.util.concurrent.L...原创 2021-02-01 20:17:39 · 65 阅读 · 0 评论 -
CopyOnWriteArrayList
CopyOnWriteArrayListpackage src.main.java.com.qqjx.thread;/** * 写时复制容器 copy on write * 多线程环境下,写时效率低,读时效率高 * 适合写少读多的环境 */import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Random;import java.u...原创 2021-02-01 09:04:11 · 149 阅读 · 0 评论 -
卖票(使用ConcurrentQueue提高并发性)
卖票(使用ConcurrentQueue提高并发性)package src.main.java.com.qqjx.thread;/** * 有N张火车票,每张票都有一个编号 * 同时有10个窗口对外售票 * 请写一个模拟程序 * * 分析下面的程序可能会产生哪些问题? * 重复销售?超量销售? * * 使用Vector或者Collections.synchronizedXXX * 分析一下,这样能解决问题吗...原创 2021-01-31 16:37:28 · 235 阅读 · 0 评论 -
卖票线程安全版
卖票线程安全版package src.main.java.com.qqjx.thread;/** * 有N张火车票,每张票都有一个编号 * 同时有10个窗口对外售票 * 请写一个模拟程序 * * 分析下面的程序可能会产生哪些问题? * 重复销售?超量销售? * * 使用Vector或者Collections.synchronizedXXX * 分析一下,这样能解决问题吗? * * 就算操作A和B都是同步的,但A和B组成的复合操作也未必是同步的,仍然需要...原创 2021-01-31 16:22:02 · 96 阅读 · 0 评论 -
Vector测试
Vector测试销售了--票 编号:996销售了--票 编号:994销售了--票 编号:993销售了--票 编号:999销售了--票 编号:998销售了--票 编号:997Exception in thread "Thread-0" Exception in thread "Thread-2" Exception in thread "Thread-7" Exception in thread "Thread-6" java.lang.ArrayIndexOutOf...原创 2021-01-31 15:53:44 · 318 阅读 · 0 评论 -
ArrayList测试
ArrayList测试package src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/1/31 * 有N张火车票,每张票都有一个编号 * 同时有10个窗口对外售票 * 请写一个模拟程序 * * 分析下面的程序可能会产生哪些问题? * 重复销售?超量销售? */import java.util.Arr...原创 2021-01-31 15:32:47 · 196 阅读 · 0 评论 -
测试ConcurrentHashMap
测试ConcurrentHashMappackage src.main.java.com.qqjx.thread;import java.util.Map;import java.util.UUID;import java.util.concurrent.ConcurrentHashMap;public class T04_TestConcurrentHashMap { static Map<UUID, UUID> m = new Concurr...原创 2021-01-31 14:37:48 · 133 阅读 · 0 评论 -
HashMap测试
HashMap测试package src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/1/31 */public class Constants { public static final int COUNT = 1000000; public static final int THREAD_COUNT = 100;}package src.main.jav...原创 2021-01-31 12:05:33 · 84 阅读 · 0 评论 -
Hashtable测试
Hashtable测试package src.main.java.com.qqjx.thread;/* * @Auther wangpeng * @Date 2021/1/31 */public class Constants { public static final int COUNT = 1000000; public static final int THRE...原创 2021-01-31 09:50:54 · 99 阅读 · 1 评论 -
容器
容器原创 2021-01-31 08:32:57 · 87 阅读 · 0 评论 -
ThreadLocal源码解析(未完待续)
ThreadLocal解析package com.qqjx.thread;/** * ThreadLocal线程局部变量 * * ThreadLocal是使用空间换时间,synchronized是使用时间换空间 * 比如在hibernate中session就存在与ThreadLocal中,避免synchronized的使用 * * 运行下面的程序,理解ThreadLocal * * @author */import j...原创 2021-01-29 08:55:23 · 84 阅读 · 0 评论 -
引入ThreadLocal
引入ThreadLocalpackage com.qqjx.thread;import java.util.concurrent.TimeUnit;public class ThreadLocal1 { volatile static Person p = new Person(); public static void main(String[] args) { new Thread(()->{...原创 2021-01-29 08:23:12 · 78 阅读 · 0 评论 -
同步容器的生产者消费者模式升级版
同步容器的生产者消费者模式升级版package com.qqjx.thread;/** * 面试题:写一个固定容量同步容器,拥有put和get方法,以及getCount方法, * 能够支持2个生产者线程以及10个消费者线程的阻塞调用 * * 使用wait和notify/notifyAll来实现 * * 使用Lock和Condition来实现 * 对比两种方式,Condition的方式可以更加精确的指定哪些线程被唤醒 * * @auth...原创 2021-01-26 20:47:14 · 58 阅读 · 0 评论 -
同步容器的生产者消费者模式
同步容器的生产者消费者模式package com.qqjx.thread;/** * 面试题:写一个固定容量同步容器,拥有put和get方法,以及getCount方法, * 能够支持2个生产者线程以及10个消费者线程的阻塞调用 * * 使用wait和notify/notifyAll来实现 * * @author */import java.util.LinkedList;import java.util.concurrent....原创 2021-01-26 07:54:30 · 67 阅读 · 0 评论 -
淘宝面试题(LockSupport解决线程间通信)
淘宝面试题(LockSupport解决线程间通信)package com.qqjx.thread;/** * 淘宝面试题 * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束 * * 给lists添加volatile之后,t2能够接到通知,但是,t2线程的死循环很浪费cpu,如果不用死循环,该怎么做呢? * * 这里使用wait和notify做到...原创 2021-01-26 07:29:09 · 96 阅读 · 0 评论 -
淘宝面试题(CountDownLatch解决线程间通信)
淘宝面试题(CountDownLatch解决线程间通信)package com.qqjx.thread;/** * 淘宝面试题 * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束 * * 给lists添加volatile之后,t2能够接到通知,但是,t2线程的死循环很浪费cpu,如果不用死循环,该怎么做呢? * * 这里使用wait和notify做...原创 2021-01-26 07:13:39 · 183 阅读 · 0 评论 -
淘宝面试题(wait,notify解决线程间通信)
淘宝面试题(wait,notify改进版)package com.qqjx.thread;/** * 淘宝面试题: * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束 * * 给lists添加volatile之后,t2能够接到通知,但是,t2线程的死循环很浪费cpu,如果不用死循环,该怎么做呢? * * 这里使用wait...原创 2021-01-26 06:41:54 · 122 阅读 · 0 评论 -
淘宝面试题(wait,notify)
淘宝面试题(wait,notify)package com.qqjx.thread;/** * 淘宝的面试题: * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束 * * 给lists添加volatile之后,t2能够接到通知,但是,t2线程的死循环很浪费cpu,如果不用死循环,该怎么做呢? * * 这里使用wait和not...原创 2021-01-25 08:30:09 · 106 阅读 · 0 评论 -
淘宝面试题(未完 待更)
淘宝面试题(Volatile)package com.qqjx.thread;/** * 淘宝面试题 * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束 * * 分析下面这个程序,能完成这个功能吗? * @author mashibing */import java.util.ArrayList;import...原创 2021-01-24 06:51:36 · 150 阅读 · 0 评论 -
LockSupport
LockSupportpackage com.qqjx.thread;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.LockSupport;public class T13_TestLockSupport { public static void main(String[] args) { Thread t = new Thread(()->{ ...原创 2021-01-24 06:41:27 · 53 阅读 · 0 评论 -
Exchanger
Exchangerpackage com.qqjx.thread;import java.util.concurrent.Exchanger;public class T12_TestExchanger { static Exchanger<String> exchanger = new Exchanger<>(); public static void main(String[] a...原创 2021-01-24 06:12:17 · 55 阅读 · 0 评论