多线程与并发库高级应用
饭一碗
Java工程师
展开
-
ThreadLocal类(线程本地存储)详解
本文包含知识点ThreadLocal是什么? ThreadLocal使用场景 ThreadLocal的具体使用 ThreadLocal注意事项1.ThreadLocal是什么?从广义上来说实现线程安全的方式包括:互斥同步、非阻塞同步、无同步方案三种,ThreadLocal就属于无同步方案中的一种。ThreadLocal被称为线程本地存储,顾名思义就将共享的数据存储到每个线程本...原创 2020-02-11 13:07:09 · 4348 阅读 · 4 评论 -
Java的自旋锁
Java线程原创 2017-04-09 20:44:06 · 451 阅读 · 0 评论 -
线程范围内共享数据(二)
本篇讲述通过ThreadLocal类来实现线程范围内共享数据代码如下:public class ThreadLocalShare { private static ThreadLocal threadLocal=new ThreadLocal(); public static void main(String[] args) { for(int i=0;i<2;i+原创 2017-04-10 20:14:18 · 358 阅读 · 0 评论 -
线程范围内共享数据(一)
Java开发过程中,若单个线程需要在多个对象与模块中访问同一个变量,则通过静态变量就可以实现,那么问题来了,当存在多个线程,多个对象与模块去访问同一变量时,就不行了。例如public class ThreadShare { private static int data = 0; public static void main(String[] args) { for(int原创 2017-04-10 18:54:17 · 542 阅读 · 0 评论 -
多线程间共享对象和数据方式
(一)若每个线程执行的代码相同,可以用同一个Runnable对象,Runnable里面有共享的对象和数据,例如卖票系统,5个线程共同卖100张票public class ThreadTest2 { public static void main(String[] args) { ShareTicket shareTicket=new ShareTicket(); new Th原创 2017-04-12 12:33:00 · 2655 阅读 · 0 评论 -
java中ReentrantLock和synchronized两种锁定机制
多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是转载 2017-12-19 14:13:04 · 673 阅读 · 0 评论 -
ConcurrentHashMap详解
线程安全的HashMap虽然经常被我们使用,但是也存在两个比较明显的缺点: 线程不安全,效率比较低; 并发编程时容易死循环; 而使用HashTable虽然能解决并发问题,但是由于使用了synchronized来实现锁机制,也使得在并发时读写效率较低。基于以上几点的话,我们会考虑使用ConcurrentHashMap来替代。不得不说的是concurrentHashMap的设计是比较出色的,它将数据分...原创 2018-05-24 15:52:27 · 24812 阅读 · 2 评论 -
并发编程之Exchanger-线程间交换数据
concurrent包中的Exchager类,主要用于两个线程间的数据通信(只适用于两个线程),或者说就是两个线程交换数据。Exchanger提供了一个同步点,当线程A调用exchange()方法时,会进入阻塞状态,直到第二个线程也调用exchange()方法后,就到达了同步点,此时就可以将两个线程各自的数据进行传递。public class ExchangerTest { privat...原创 2018-05-29 16:10:30 · 471 阅读 · 0 评论