JAVA多线程
吃饼青年
精通Java
展开
-
Future案例一直阻塞问题探究
本案例是学习自《Java并发编程之美》第十一章第九小节整理总结而来!推荐大家学习此书!代码案例我们设定一个单线程线程池并且队列设置为只能容纳一个任务,否则就执行DiscardPolicy的拒绝策略!然后开始执行下面代码,看看问题所在!public class FutureDemo { public static void main(String[] args) throws Exe...原创 2020-05-07 13:57:25 · 1456 阅读 · 0 评论 -
Unsafe使用案例
public class UseUnsafeClassDemo { static Unsafe unsafe = Unsafe.getUnsafe(); private static long offset; private static volatile int state = 0; static { try { off...原创 2020-05-06 15:48:37 · 229 阅读 · 0 评论 -
sleep和wait方法区别
方法区别sleep方法sleep让出cpu资源,但是不会释放锁,不干涉锁行为;哪里都可以使用wait方法wait是既让出cpu资源,又会释放锁资源;一般使用在同步方法或者同步代码块中案例分析public class WaitSleepDemo { public static void main(String[] args) throws InterruptedExce...原创 2020-05-03 23:00:18 · 206 阅读 · 1 评论 -
Java线程的状态学习
Java中线程的状态Java线程状态共有6种,它就在Thread类中公共枚举类State中,并且同一时刻,线程只处于一个具体状态.这只是虚拟机状态,不映射任何系统线程的状态!代码如下:public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, T...原创 2020-04-29 11:19:28 · 161 阅读 · 0 评论 -
并发容器之CopyOnWriteArrayList
CopyOnWriteArrayList并发同步集合,适合读多写少的场景原创 2020-03-28 21:19:45 · 159 阅读 · 0 评论 -
设计模式之单例设计模式
饿汉式单例、懒汉式单例比较,以及分析为何线程不安全,如何写成线程安全的,尤其学习到了利用枚举写单例的case,无需过多的同步等手段原创 2017-05-29 10:39:39 · 325 阅读 · 0 评论 -
Java多线程-Volatile变量学习记录
与Synchronized关键字区别:synchronized是JVM对程序的加锁机制,会使执行线程阻塞;volatile变量则不会,所以说是相对于synchronized而言更轻量的同步机制。作用1.volatile修饰的变量可以保证更新操作对其它线程可见;2.当被它修饰后,编译器与运行时都会注意到这个变量是共享的,所以不会将该变量上的操作和其他内存操作一起重排序。禁止指令重...原创 2017-04-19 10:54:28 · 310 阅读 · 0 评论 -
ThreadLocal学习理解
ThreadLocal是什么,如何使用,以及导致的问题相关思考和学习原创 2019-11-02 23:11:44 · 184 阅读 · 0 评论 -
线程死锁
通过一个简单的示例,然后jvm监控死锁现象,学习资源争抢下的死锁问题原创 2018-04-18 11:05:30 · 190 阅读 · 0 评论 -
AbstractQueuedSynchronizer实现独占锁
线程同步的基础组件同步器AQS的学习与认知。原创 2018-04-04 09:51:18 · 316 阅读 · 0 评论 -
定时线程池执行任务时任务执行时间与定时关系
当执行时间小于定时时间的时候:System.out.println("执行的时间小于设定的周期");ScheduledExecutorService service = Executors.newScheduledThreadPool(1);service.scheduleAtFixedRate(new Runnable() { @Override public voi...原创 2018-04-03 20:08:49 · 2840 阅读 · 1 评论 -
Java多线程之同步工具类(CountDownLatch、CyclicBarrier、Semaphore)
CountDownLatch简介:CountDownLatch 可以等待一组线程或者是任务等完成,否则await()会将其一直阻塞。 当然它也提供了等待超时的处理方法await(long timeout, TimeUnit unit),此类的使用效果和调用Thread的join()方法差不多:public boolean await(long timeout, TimeUnit unit原创 2018-01-24 11:31:35 · 473 阅读 · 0 评论 -
Java多线程之线程池
线程池处理任务原理线程池实现参数解析:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit...原创 2018-01-12 10:22:13 · 305 阅读 · 0 评论 -
Java 多线程之CyclicBarrier
参考文章:http://www.jianshu.com/p/0c2af47f98fdimport java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/** *@className CyclicBarrierTest *@description : * *原创 2017-06-15 10:45:35 · 432 阅读 · 0 评论 -
Java多线程之AbstractQueuedSynchronizer
2018年03月31日 再理解AQS队列同步器 https://blog.csdn.net/kevin_king1992/article/details/79813078 https://my.oschina.net/wugong/blog/17849462017年06月18日 参考:JDK 1.6.0 API 中文版 参考:JDK 1.8.0_121 参考...原创 2017-06-18 16:42:15 · 257 阅读 · 0 评论 -
Java多线程之ReentrantLock
今天简单的分析一下ReentrantLock的源码,碍于水平有限,如有疏漏或者错误之处请指正。JDK版本:jdk1.8.0_121切入正题:当我们使用它的时候一般都是这样new对象的:Lock lock = new ReentrantLock();那么先看一下ReentrantLock的构造函数。 public ReentrantLock() { //当没有参数的原创 2017-06-18 15:00:03 · 279 阅读 · 0 评论 -
Java 多线程之Lock接口
Lock提供了比synchronized关键字操作性更为强的锁定操作。Lock的实现类有: ReentrantLock, ReentrantReadWriteLock.ReadLock, ReentrantReadWriteLock.WriteLock;注意:锁定和取消锁定出现在不同作用范围中时,必须谨慎地确保保持锁定时所执行的所有代码用 try-finally 或 try-catch 加原创 2017-06-18 12:20:13 · 318 阅读 · 0 评论