多线程
小白鼠丶
当时若不登高望,谁识东流海样深
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程池总结
目录线程池的使用及优势线程池三种常用方式Executors.newFixedThreadPool(int) :执行长期的任务,性能好很多Executors.newSingleThreadExecutor() :一个任务一个任务执行的场景Executors.newCachedThreadPool() : 适用:执行很多短期异步的小程序或者负载均衡较轻的服务线程池七大入门...原创 2019-11-27 22:19:50 · 229 阅读 · 0 评论 -
Call FutureTask
创建线程的第三种方式:有返回值Demopackage demo;import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;import java.util.concurrent.TimeUnit;import static java.lang.System.out;cl...原创 2019-11-20 22:25:48 · 228 阅读 · 0 评论 -
生产者消费者模式 3.0(阻塞队列版)
2.0版:多线程 生产者与消费者2.0版(Condition版)1.0版 :多线程 生产者与消费者 遇到的问题以及解决方法package demo;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurre...原创 2019-11-20 21:39:53 · 209 阅读 · 0 评论 -
Synchronized和Lock有什么区别
1.原始构成synchronized是关键字属于JVM层面 monitorenter(底层是通过monitor对象来完成,其实wait/nitofy等方法也依赖monitor对象,只有在同步块或同步方法中才能使用这两个方法) monitorexitLock是具体类(java.util.concurrent.locks.lock)api层面的锁synchroniz...原创 2019-11-19 22:50:49 · 272 阅读 · 0 评论 -
多线程 生产者与消费者2.0版(Condition版)
原始版:多线程 生产者与消费者 遇到的问题以及解决方法package demo;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;import static java....原创 2019-11-19 22:15:55 · 164 阅读 · 0 评论 -
Java的阻塞队列
什么是阻塞队列:阻塞队列BlockingQueue,相当我们经常接触的List,但如果BlockQueue是空的,这时如果有线程要从这个BlockingQueue取元素的时候将会被阻塞进入等待状态,直到别的线程在BlockingQueue中添加进了元素,被阻塞的线程才会被唤醒。同样,如果BlockingQueue是满的,试图往队列中存放元素的线程也会被阻塞进入等待状态,直到BlockingQu...原创 2019-11-19 21:31:10 · 246 阅读 · 0 评论 -
CyclicBarrier 应用实例
public class CylicBarrierDemo { public static void main(String[] args) throws Exception { CyclicBarrier cyclicBarrier = new CyclicBarrier(7,()->{ out.println("**...原创 2019-11-12 22:01:20 · 178 阅读 · 0 评论 -
J.U.C之并发工具类:CountDownLatch
实例/** * Tips: * * @author Liuq * @version 2019年10月24日 */public class CountDownLatchDemo { public static void main(String [] args) throws Exception{ CountDownLatch countDownLa...转载 2019-10-28 22:17:25 · 195 阅读 · 0 评论 -
Java 公平锁/非公平锁/可重入锁/递归锁/自旋锁/独占锁(写锁)/共享锁(读锁)/互斥锁 代码实现
目录公平锁/非公平锁两者区别可重入锁(也叫递归锁)理论知识实例(synchronized)实例(ReentrantLock)自旋锁实例独占锁(写锁)/共享锁(读锁)/互斥锁公平锁/非公平锁公平锁:是指多个线程按照申请锁的顺序来获取锁,类似于排队打饭,先来后到非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优...原创 2019-10-24 08:38:09 · 401 阅读 · 0 评论 -
集合类线程不安全问题重现以及解决方案
目录导致原因List不安全Demo解决方案Set不安全Demo解决方案Map不安全Demo解决方案:导致原因 并发修改争抢导致的List不安全Demo public static void main(String [] args){ ArrayList<String> list = new Ar...原创 2019-10-17 16:22:05 · 228 阅读 · 0 评论 -
ABA问题模拟以及解决方案
【Java并发编程】AtomicReference 原子引用AtomicReference和AtomicInteger非常类似,不同之处就在于AtomicInteger是对整数的封装,底层采用的是compareAndSwapInt实现CAS,比较的是数值是否相等,而AtomicReference则对应普通的对象引用,底层使用的是compareAndSwapObject实现CAS,比较的是两个对...原创 2019-10-17 15:09:21 · 1299 阅读 · 0 评论 -
happen-before规则
【死磕Java并发】—–Java内存模型之happens-before转载 2019-10-17 12:24:33 · 252 阅读 · 0 评论 -
volatile关键字
目录volatile是什么可见性不保证原子性禁止指令重排序volatile是什么 volatile是java虚拟机提供的轻量级同步机制保证可见性 禁止指令重排序 不保证原子性可见性不保证原子性/** * Tips: * * @author Liuq * @version 2019年10月16日 */publi...原创 2019-10-17 09:56:57 · 163 阅读 · 0 评论 -
CAS底层原理分析
目录CAS底层原理getAndIncrement()unsafe类AtomicInteger类CAS是什么CAS底层具体实现第一步第二步第三步第四步CAS总结:CAS 优缺点CAS是什么?:英文解释:比较并交换public static void main(String[] args) { AtomicInteger ...原创 2019-10-11 22:56:54 · 999 阅读 · 0 评论 -
Java守护线程和main线程整理
Java中有两类线程: User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作; 只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。 Daemon的作用是为其他线程的运行提供便利服务,守护线程最典...原创 2019-09-12 16:46:05 · 1866 阅读 · 0 评论 -
线程按序交替
编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的 ID 在屏幕上打印 10 遍,要 求输出的结果必须按顺序显示。如:ABCABCABC…… 依次递归package com.juc;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks....原创 2019-06-26 14:52:31 · 185 阅读 · 0 评论 -
多线程 生产者与消费者 遇到的问题以及解决方法
目录最原始的生产者消费者模型问题一 :产品product >= 1 时wait问题二:增加一些消费者和生产者线程最原始的生产者消费者模型package com.juc;/* * 生产者和消费者案例 */public class TestProductorAndConsumer1 { public static void main(String[] args...原创 2019-06-26 11:21:43 · 949 阅读 · 0 评论
分享