Java多线程编程
文章平均质量分 52
java的多线程编程是一块难点,该专栏主要记录一些平时在工作上用过的多线程编程技术以及踩过的一些坑。
hxcaifly
这个作者很懒,什么都没留下…
展开
-
【Java多线程编程】:还在使用 SimpleDateFormat?你的项目崩没?
文章目录引言1. 问题场景复现2. 多线程不安全原因3. 解决方案4. 基于JDK1.8的DateTimeFormatter5. 总结引言日常开发中,我们经常需要使用时间相关类,说到时间相关类,想必大家对SimpleDateFormat并不陌生。主要是用它进行时间的格式化输出和解析,挺方便快捷的,但是SimpleDateFormat并不是一个线程安全的类。在多线程情况下,会出现异常,想必有经验...原创 2019-04-11 16:59:22 · 299 阅读 · 0 评论 -
【Java并发编程实战】:Java中的读写锁及其实现分析
文章目录1. 前言2. 读写锁的接口与示例3. 读写锁的实现分析3.1. 读写状态的设计3.2. 写锁的获取与释放3.3. 读锁的获取与释放3.4. 锁降级1. 前言在Java并发包中常用的锁(如:ReentrantLock),基本上都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时 刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了...原创 2019-03-10 23:34:08 · 728 阅读 · 0 评论 -
《Java并发编程实战》读书总结:synchronized和ReentrantLock之间怎么选择
ReentrantLock在加锁和内存上提供的语义与内置锁synchronized相同,此外它还提供了一些其他功能,比如定时的锁等待,可中断的锁等待,公平性,以及实现非块结构的加锁。ReentrantLock在性能上似乎优于内置锁,其中在Java6中略有胜出,而在Java5.0则是远远胜出。那么为什么不直接弃用synchronized,并在所有的并发代码中都是用ReentrantLock?与显...原创 2019-03-10 16:16:28 · 296 阅读 · 2 评论 -
【Java多线程编程】:线程同步的方法
1.为何要线程同步java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。2. 线程同步的方式2.1. synchronized 同步synchronized 的同步方式主要有两种:同步方法和同步代码块。同步方法即...原创 2019-02-20 15:55:12 · 320 阅读 · 0 评论 -
【Java多线程编程】: 你真的懂wait、notify和notifyAll吗?
1. 引出问题生产者消费者模型是我们学习多线程知识的一个经典案例,一个典型的生产者消费者模型如下:public void produce() { synchronized (this) { while (mBuf.isFull()) { try { wait(); } catch ...转载 2019-01-28 16:26:11 · 207 阅读 · 0 评论 -
【Java多线程编程】:Lock和synchronized的区别和使用
文章目录前言1. synchronized的缺陷2. java.util.concurrent.locks包下常用的类2.1. Lock2.2. ReentrantLock2.3. ReadWriteLock2.4. ReentrantReadWriteLock3. Lock和synchronized的选择4. 锁的相关概念介绍4.1. 可重入锁4.2. 可中断锁4.3. 公平锁4.4. 读写锁...转载 2019-01-28 11:12:49 · 175 阅读 · 0 评论 -
【Java多线程编程】:Threadlocal的使用及其内存溢出
1. 简介高并发处理起来比较麻烦,很多新手对此都会非常头疼。要知道避免并发的最简单办法就是线程封闭,也即是把对象封装到一个线程里,那么对象就只会被当前线程能看到,使得对象就算不是线程安全的也不会出现任何安全问题。Threadlocal是实现该策略的最好的方法。Threadlocal为每个线程提供了一个私有变量,然后线程访问该变量(get或者set)的时候实际上是读写的自己的局部变量从而避免了并发...转载 2019-01-28 09:56:34 · 904 阅读 · 0 评论 -
【Java多线程编程】:JAVA多线程读写文件范例
1. 前言本程序是基于这么一种考虑,某系统后台有个将近2G大小的日志文件,你用任何编辑器去打开它,都将会很困难。针对这样的大文件解析处理,解决方案是使用多个线程,分割读取指定的大文件。获取我们所需要的信息。不多说,上代码了,有注释可以帮助理解。2.代码package com.thread.multipl.mysolution; import java.io.IOException;...原创 2018-10-08 17:03:58 · 7158 阅读 · 1 评论 -
【Java多线程编程】:CyclicBarrier和CountDownLatch比较
文章目录1. 前言2. 差异性对比3. CountDownLatch用法3.1. CountDownLatch类的简单介绍3.2. CountDownLatch应用示例4. CyclicBarrier用法4.1. CyclicBarrier类的简单介绍4.2. CyclicBarrier应用示例1. 前言CyclicBarrier和CountDownLatch都是同步辅助类,它们在Java1....原创 2019-01-20 12:23:58 · 305 阅读 · 1 评论