![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA多线程
bryant_yang
这个作者很懒,什么都没留下…
展开
-
高并发编程学习笔记(6)----读写分离设计模式
读写锁分离在多线程的情况下访问共享资源,需要对资源进行同步操作以防止数据不一致的情况发生,通常我们可以使用synchronized关键字或者显示锁。对资源的访问一般包括两种操作–读的写,但是多个资源在同时读取同步数据时并不会引起数据不一致的情况发生。那么这个时候采用排他的方式加锁就显得有些简单粗暴了。线程读写读不冲突冲突写冲突冲突当对某个资源读的操作...原创 2018-12-04 22:28:55 · 764 阅读 · 0 评论 -
高并发编程学习笔记(8)--Latch设计模式
Latch设计模式如果有若干线程并发执行某个特定任务,需要等到所有的子任务都执行结束之后在统一汇总,就可以采用Latch设计模式。Latch(门阀)设计模式:该模式指定了一个屏障,只有所有的条件都达到满足的时候,门阀才能打开。Latch 抽象类在Latch中limit就相当于门阀。public abstract class Latch { protected int limit...原创 2018-12-05 20:15:35 · 279 阅读 · 0 评论 -
高并发编程学习笔记(7)-Future设计模式
Future设计模式如果有任务执行需要比较长的时间,通常需要等待任务执行结束或者出错才能返回结果,在此期间调用者只能陷入阻塞苦苦等待,对此,Future设计模式提供了一种凭据式解决方案。可以先提交任务,立即返回一个凭据,调用者可稍后凭借凭借查询执行结果。接口定义Future提交任务后会返回该接口,用于查询执行结果。 T get() throws InterruptedExcepti...原创 2018-12-05 17:14:40 · 347 阅读 · 0 评论 -
高并发编程学习笔记(5)----监控任务的生命周期
虽然Thread提供了可获取状态,以及判断是否alive的方法,但是这些方法是针对线程本身的,而我们提交的任务Runnable在运行过程中所处状态是无法直接获得的。当某一个对象发生状态改变需要通知第三方时,观察者模式就能够胜任这样的工作。观察者模式需要定义三个接口Observable接口public interface Observable { enum Cycle{ ...原创 2018-12-02 00:08:44 · 387 阅读 · 0 评论 -
JAVA多线程
1.线程概述进程:进程由程序、程序运行所需要的数据、进程PCB构成。进程可以通俗的理解为正在运行的程序。线程:线程是程序的执行单元,执行路径。是程序使用CPU的最基本单位。进程是拥有资源的基本单位,线程是CPU调度的基本单位多线程的意义:提高CPU的利用率。2.创建线程的两种方式1)继承Thread类创建线程第一种方法是继承Thread类,重写类中的run()方法,当调用到Threa...原创 2018-11-18 00:05:43 · 469 阅读 · 0 评论 -
高并发编程学习笔记(4)----单例模式
各种架构设计模式1.单例模式饿汉式public final class Singleton1 { private Singleton1() { } private static final Singleton1 ME = new Singleton1(); public static Singleton1 getInstance() { ret...原创 2018-12-01 20:26:08 · 101 阅读 · 0 评论 -
高并发编程学习笔记(3)----volatile
深入理解volatile关键字CPU缓存模型引文CPU与内存速度的严重不对等,出现了在CPU与主存之间增加缓存的设计,现在缓存的数量可以增加到三级。1最靠近CPU的缓存称为L1,然后依次是L2,L3和主内存。由于程序指令和程序数据的行为和热点分布差异很大,因此L1Cache又被划分成了L1i(instruction)和L2d(data)。Cache Line可以认为是CPU Cache中最小缓...原创 2019-03-15 10:21:26 · 181 阅读 · 0 评论 -
高并发编程学习笔记(2)----类加载
JAVA ClassLoader在上一篇中提到了两个方法public ClassLoader getContextCLassLoader()获取线程上下文的类加载器public void setContextClassLoader(ClassLoader cl)设置线程的类加载器在上一篇中没有对线程上下文加载器相关方法做太多解析。要想说明白这个问题必须先掌握JVM的类加载原理和整个类的加载...原创 2018-11-30 21:41:14 · 169 阅读 · 0 评论 -
高并发编程学习笔记(1)----基础知识
高并发编程多线程基础部分参考https://blog.csdn.net/qq_39536394/article/details/84193900一.多线程基础1.Thread构造函数Thread()Thread(Runnable target)Thread(ThreadGroup group,Runnable target)Thread(Runnable target,String ...原创 2019-03-15 10:21:13 · 230 阅读 · 0 评论 -
线程安全集合
jdk 5 引入并发包概要1. 线程安全的集合遗留的线程安全集合,如 Hashtable, VectorCollections 里的一系列以 synchronized 开头的方法,可以把非线程安全的集合包装成线程安全的集合体现了设计模式中的装饰器模式List list = new ArrayList();// 装饰器模式List list1 = Collections.s...原创 2019-03-03 21:54:31 · 333 阅读 · 0 评论