
Java编发编程
文章平均质量分 92
半岛码农
这个作者很懒,什么都没留下…
展开
-
Java 并发编程【ThreadLocal的使用和原理】
ThreadLocal是什么ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。下图为ThreadLocal的内部结构图从上面的结构图,我们已经窥见ThreadLocal的核心机制:每个Thread线程内部都有一个Map...原创 2019-01-22 11:52:14 · 1993 阅读 · 0 评论 -
Java并发编程【线程中通信 CountDownLatch、CyclicBarrier、Semaphore 介绍和用法】
CountDownLatch什么是CountDownLatch一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无...原创 2019-01-22 13:51:21 · 2002 阅读 · 0 评论 -
Java并发编程【 volatile语义 】
volatile语义在说明volatile是什么之前,先看看Java的内存模型那么volatile有什么作用?volatile的第一个语义: 保证线程间的变量,简单地说就是当线程A对变量X进行了修改后,在线程A后面执行的其他线程能看到变量X的变动线程对变量进行修改之后,要立刻回写到主内存。线程对变量读取的时候,要从主内存中读,而不是缓存。volatile的第二条语义:禁止指令重排序...原创 2019-01-28 11:31:23 · 1853 阅读 · 0 评论 -
Java并发编程 【线程的状态和线程的创建】
线程的状态新建状态(New):新创建了一个线程对象。就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权。即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。阻塞状态(Blocked):...原创 2019-02-13 14:36:17 · 280 阅读 · 0 评论 -
Java并发编程【线程中安全与锁】
什么是线程安全当多个线程访问某个类时,不管运行时环境采用何种的调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类就是线程安全的。线程安全主要体现在一下三个方面:原子性:提供了互斥访问,同一时刻只能有一个线程对它进行操作可见性:一个线程对主内存的修改可以及时的被其他线程观察到有序性:一个线程观察其他线程中的指令执行...原创 2019-02-13 16:49:45 · 351 阅读 · 0 评论 -
Java并发编程 【生产者消费者模式的实现】
最简单的实现方式是利用阻塞队列,废话不多说,上代码:wait、notify、notifyAll是Object对象的属性,并不属于线程。我们先解释这三个的一个很重要的概念wait:使持有该对象的线程把该对象的控制权交出去,然后处于等待状态,并释放锁notify:通知某个正在等待这个对象的控制权的线程可以继续运行,同样也是释放锁notifyAll:会通知所有等待这个对象控制权的线程继续运行...原创 2019-02-14 11:01:43 · 1154 阅读 · 0 评论