Java多线程
文章平均质量分 95
讲解多线程相关的基础知识,帮助大家对多线程有一个宏观的了解
LemmonTreelss
引刀成一快,不负少年头
展开
-
【多线程】单例模式与多线程
一、前言 如何使单例模式遇到多线程是安全的、正确的? 我们在学习设计模式的时候知道单例模式有懒汉式和饿汉式之分。简单来说,饿汉式就是在使用类的时候已经将对象创建完毕,懒汉式就是在真正调用的时候进行实例化操作。二、饿汉式+多线程 public class MyObject { //饿汉模式 private static MyObject myObjec...原创 2018-02-08 08:59:41 · 671 阅读 · 13 评论 -
【多线程】ReentrantLock重入锁
一、Lock接口 在java多线程中,可以使用synchronized关键字来实现线程之间同步互斥、但在JDK1.5之后并发包中新增加了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要显示地获取和释放锁,虽然它缺少了隐式获取释放锁的便捷性,但是却拥有了锁获取与释放的可操作性、可中断的获取或及超时获取锁等多种syn原创 2018-01-30 14:48:03 · 526 阅读 · 7 评论 -
【多线程】线程通信之join、ThreadLocal
一、方法join 在很多情况下,主线程创建并启动子线程,如果子线程中需要进行大量的耗时运算,主线程往往将早于子线程结束之前结束。如果主线程想等待子线程执行完成之后在结束,比如子线程执行一个方法,主线程要取得这个方法的返回值,就要用到join()方法了。方法join的作用是等待线程对象销毁。线程Thread除了提供join方法之外,还提供了join(long millis)和join(...原创 2018-01-29 11:43:10 · 657 阅读 · 7 评论 -
【多线程】线程通信之等待/通知机制
一、概念 线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体。线程间的通信就是成为整体的必用方案之一。可以说,使线程进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时还会使开发人员对各线程任务在处理的过程中进行有效的把控和监督。二、线程的执行模式 1、互不通信的多线程模式 多个线程会在系统中并发执行。线程原创 2018-01-28 22:17:46 · 2136 阅读 · 8 评论 -
【多线程】volatile非原子的特性
一、前言: 上一遍博客中已经提及了volatile关键字虽然拥有了多个线程之间的可见性,但是却不具备同步性(也就是原子性),可以算的上是线程同步的轻量级实现,性能要比synchronized强很多,不会造成阻塞(在很多开源的框架里,比如netty的底层代码就大量使用volatile,可见netty性能一定是非常不错的)。二、实现原子性: volatile关键字只具原创 2018-01-25 14:46:32 · 506 阅读 · 10 评论 -
【多线程】volatile关键字
一、volatile概念: 关键字volatile可以说是java虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确、完整地理解。遇到需要处理多线程数据竞争问题的时候一律使用synchronized来进行同步。 volatile关键字的主要作用是使变量在多个线程间可见。多个线程间可见指的是当一条线程修改了这个变量的值,会立即通知到其他的线程。二、内存模型原子性、可见性...原创 2018-01-23 21:01:34 · 396 阅读 · 9 评论 -
【多线程】synchronized同步代码块
一、前言 使用synchronized声明的方法在 某些情况下是有弊端的,比如A线程调用同步的方法执行一个长时间的任务,那么B线程就必须等待比较长的时间才能执行,这种情况可以使用synchronized代码块去优化代码执行时间,也就是通常所说的减少锁的粒度。/** * 使用synchronized代码块减小锁的粒度,提高性能 * @author alienware *原创 2018-01-23 12:31:01 · 31598 阅读 · 17 评论 -
【多线程】线程安全、锁的同步和异步
一、基本概念 线程安全:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。 非线程安全:非线程主要是指多个线程对同一个对象中的同一个实例变量进行操作时会出现值被更改、值不同步的情况,进而影响程序的执行流程。 synchronized:可以在任意对象及方法上加锁,而加锁的这段代码称为“互斥区”或“临界区...原创 2018-01-22 20:13:36 · 10428 阅读 · 65 评论 -
【多线程】线程的基本概念
一、前言: 提及多线程不得不提及“进程”这个概念。“百度百科”里对“进程”的解析如下:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 初看这个文字会觉得十分的抽象,难以理解。但看到下面的图片,大家可能会对“进程”有一个感性的认知。一个PID对应一个进程。...原创 2018-01-20 21:47:30 · 9785 阅读 · 8 评论