随笔分类 -  1.2.├─ thread

锁原理 - 信号量 vs 管程:JDK 为什么选择管程
摘要:锁原理 信号量 vs 管程:JDK 为什么选择管程 [toc] 并发编程之美系列目录: 管程和信号量都能解决并发问题,它们是等价的。所谓等价指的是用管程能够实现信号量,也能用信号量实现管程。但是管程在信号量的基础上提供条件同步,使用更容易,所以 Java 采用的是管程技术。synchronized 阅读全文

posted @ 2020-03-22 08:29 binarylei 阅读(7822) 评论(4) 推荐(10) 编辑

并发编程 - 可见性、原子性和有序性问题:并发编程 Bug 的源头
摘要:并发编程 可见性、原子性和有序性问题:并发编程 Bug 的源头 [toc] 并发编程之美系列目录: 本文是并发编程的第一篇,主要介绍为什么需要并发编程,同时分析并发编程问题的根本原因 可见性、原子性和有序性三个方面。下一章我们会继续分析 JVM 是如何解决这三个问题。 1. 并发程序幕后的故事 为什 阅读全文

posted @ 2020-03-20 18:38 binarylei 阅读(561) 评论(0) 推荐(0) 编辑

Java Thread系列(十)Future 模式
摘要:Java Thread系列(十)Future 模式 Future 模式适合在处理很耗时的业务逻辑时进行使用,可以有效的减少系统的响应时间,提高系统的吞吐量。 一、Future 模式核心思想 如下的请求调用过程时序图。当 call 请求发出时,需要很长的时间才能返回。左边的图需要一直等待,等返回数据后 阅读全文

posted @ 2018-05-06 21:21 binarylei 阅读(344) 评论(0) 推荐(0) 编辑

Java Thread系列(九)Master-Worker模式
摘要:Java Thread系列(九)Master Worker模式 Master Worker模式是常用的并行设计模式. 一、Master Worker 模式核心思想 Master Worker 系统由两个角色组成,Master 和 Worker,Master 负责接收和分配任务,Worker 负责处理 阅读全文

posted @ 2018-05-06 21:19 binarylei 阅读(465) 评论(0) 推荐(0) 编辑

Java Thread系列(十)生产者消费者模式
摘要:Java Thread系列(十)生产者消费者模式 生产者消费者问题(producer consumer problem),是一个多线程同步问题的经典案例。该问题描述了两个共亨固定大小缓冲区的线程—即所谓的“生产者”和“消费者—在实际运行时会发生的问题。 一、信号灯法 信号灯法实际上就是保证同一时间只 阅读全文

posted @ 2018-05-06 21:17 binarylei 阅读(304) 评论(0) 推荐(0) 编辑

Java Thread系列(七)死锁
摘要:Java Thread系列(七)死锁 当线程需要同时持有多个锁时,有可能产生死锁。考虑如下情形: 线程 A 当前持有互斥所锁 lock1,线程 B 当前持有互斥锁 lock2。接下来,当线程 A 仍然持有 lock1 时,它试图获取 lock2,因为线程 B 正持有 lock2,因此线程 A 会阻塞 阅读全文

posted @ 2018-05-06 21:15 binarylei 阅读(160) 评论(0) 推荐(0) 编辑

Java Thread系列(六)volatile
摘要:Java Thread系列(六)volatile volatile 关键字具备可见性,不具备原子性。主要作用是使变量在多个线程间可见。但不具备原子性(同步性),可以算一个轻量级的 synchronized ,性能要比 synchronized 强很多,不会造成阻塞。 一、volatile 可见性 二 阅读全文

posted @ 2018-05-06 21:14 binarylei 阅读(269) 评论(0) 推荐(0) 编辑

Java Thread系列(四)线程通信
摘要:Java Thread系列(四)线程通信 一、传统通信 public static void main(String[] args) throws InterruptedException { final ThreadLocal th = new ThreadLocal(); Thread t1 = 阅读全文

posted @ 2018-05-06 21:13 binarylei 阅读(246) 评论(0) 推荐(0) 编辑

Java Thread系列(五)synchronized
摘要:Java Thread系列(五)synchronized 本文我们讨论 synchronized 重量级锁的实现原理。 一、synchronized 实现原理 1.1 synchronized 修饰符对应的字节码指令 我们知道在 java中synchronized 主要有两种使用形式:同步方法和同步 阅读全文

posted @ 2018-05-06 21:13 binarylei 阅读(534) 评论(0) 推荐(0) 编辑

Java Thread系列(三)线程安全
摘要:Java Thread系列(三)线程安全 一、什么是线程安全 线程安全概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。 线程安全来说,需要满足以下两个特性: 原子性 可见性 执行结果: 由此可见: 1. 多个线程要执行 synch 阅读全文

posted @ 2018-05-06 21:12 binarylei 阅读(280) 评论(0) 推荐(0) 编辑

Java Thread系列(二)线程状态
摘要:Java Thread系列(二)线程状态 一、线程的五种状态 1. 新建状态(New):新创建了一个线程对象,尚未启动。 2. 就绪状态(Runnable):也叫可运行状态。线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取 CPU 的使用 阅读全文

posted @ 2018-05-06 21:11 binarylei 阅读(284) 评论(0) 推荐(0) 编辑

Java Thread系列(一)线程创建
摘要:Java Thread系列(一)线程创建 Java 中创建线程主要有三种方式:继承 Thread、实现 Runnable 接口、使用 ExecutorService、Callable、Future 实现由返回结果的多线程。 线程是 CPU 调度的最小单位。 一、继承 Thread 类创建线程类 《4 阅读全文

posted @ 2018-05-06 21:10 binarylei 阅读(309) 评论(0) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示