多线程
Roger6650
这个作者很懒,什么都没留下…
展开
-
Java 多线程线程池-ThreadPoolExecutor分析
0.合理使用线程池的好处降低资源消耗--通过重复利用已创建的线程,降低线程的创建和销毁造成的消耗 提高响应速度-当任务到达时,任务可以不用等待线程创建就能立即执行 提高线程的可管理性-线程是稀缺资源,如果无限制的创建线程,不仅会消耗系统的资源,还会降低系统的稳 定性,使线程可以进行统一的分配、调优和监控 1.线程池状态2.线程...原创 2018-11-15 16:49:12 · 290 阅读 · 1 评论 -
Java 多线程线程池-ThreadPoolExecutor的execute方法分析
0.ThreaPoolExecutor的类图1.线程池类的一些重要属性 //AtomicInteger占位32位 private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); private static final int COUNT_BITS = Integer.SIZE - ...原创 2019-08-13 16:20:47 · 1013 阅读 · 0 评论 -
Java 多线程线程池-ThreadPoolExecutor的Worker类对象分析
0.Worker类对象的类图1.Worker类对象的解释线程池中的线程,都会被封装成一个Worker类对象,ThreadPoolExecutor维护的其实就是一组Worker对象;Worker类中有两个属性,一个是firstTask,用来保存传入线程池中的任务,一个是thread,是在构造Worker对象的时候,利用ThreadFactory来创建的线程,用来处理任务的线程;...原创 2019-08-21 17:14:13 · 1893 阅读 · 0 评论 -
ReentrantLock原理分析
1.ReentrantLock,加锁时阻塞队列模型说明: 当往队列里面添加完节点后,队列的waitStatus变化,及其队列自身变化如果新添加的节点的前驱节点是处于取消状态,则会把这样相邻的处于取消状态的节点移除如果新添加的节点的前驱节点waitStatus=0,则需要把其修改为-1,即SIGNAL状态同步队列的头节点,可以理解为正在占有锁的线程2.ReentrantLo...原创 2019-08-14 15:13:38 · 179 阅读 · 0 评论 -
缓存一种性协议MESI
MESI四种状态的说明 MESI缓存一致性协议 状态 描述 监听任务 M(Modified)修改 该缓存行(cached lined)有效,数据被修改了; 数据和主内存中的数据不一致 数据只存在于本cpu缓存中 缓存行监听其他cpu是否读取该缓存行对应的主内存 中变量的操作,这种操作必须在该缓存行把修改后的 ...原创 2019-07-22 14:03:04 · 133 阅读 · 0 评论 -
多CPU ,多核和进程以及多线程之间的关系
进程和线程的关系 每一个独立的应用程序都是一个进程,每一个进程又包含1-N个线程 CPU和进程的关系 CPU同一时刻只能运行一个进程,那么为什么我们的计算机可以同时打开多个应用程序(网页浏览器,QQ聊天等)呢?因为我们的计算机有操作系统调度器。从上面的可以看出单CPU时两个进程是交替执行的,在一个cpu时间片上只能有一个进程执行;但是因为一个cpu时间片...原创 2019-07-22 10:17:07 · 777 阅读 · 0 评论 -
Synchronized关键字的原理分析
Synchronized的使用方式1.当synchronized修饰非静态方法时,锁住的是当前调用该方法的实例对象2.当synchronized修饰的是非静态代码块,则锁住的是括号里面的实例对象3.当synchronized修饰的是静态方法或者静态代码块时,则锁住的是类对象,因为不管一个class被实例化多少次,静态方法和静态代码块在jvm中只会存在一份,因此当此类的所有实例对象...原创 2019-08-05 14:24:32 · 151 阅读 · 0 评论 -
Java 线程池的缺陷
一.缺陷1.非核心线程的创建时机 1.1) 核心线程的数量是corePoolSize 的值,非核心线程的数量是 maxinumPoolSize -corePoolSize ; 1.2) 非核心线程创建的触发时机是:当前线程池中核心线程已满,且没有空闲的线程,还有任务等待队列已满,满足上面的所有条件,才会去创建线程去执行新提交的任务;...转载 2019-07-05 15:10:54 · 3369 阅读 · 0 评论 -
多线程设计模式之一——Master-Worker设计模式
1.Master-Worker原理 1.1) Master-Worker模式是一种常见的并行设计模式之一,并行体现在一下两个方面: 1.1.1) Client端把待处理的任务交给Master,Master将这个任务拆分成多个子任务交给Worker线程进行处理,此时Client不需要阻塞的等待Master的处理结果,可以去处理其他的事情 ...原创 2019-01-07 14:51:31 · 501 阅读 · 1 评论 -
java并发包-CountDownLatch CyclicBarrier Semaphore 案例
1.CountDownLatch案例 --调用.await()阻塞等待 --调用countDown()方法每次递减1,直到为0,启动所有等待的线程package com.roger.juc;import java.util.concurrent.CountDownLatch;/** * java并发包-CountDownLatch计数器 * &...原创 2018-11-20 14:31:15 · 292 阅读 · 0 评论 -
Java并发编程锁的分类-以及读写锁的实例
0.Java不得不知道的锁知识1.可重入锁: 1)概念:锁具备可重入性,则称为可重入锁;可重入性表明了锁的分配机制,是基于线程分配的,而不是基于方法调用分配的; 2):synchronized 和ReentrantLock都是属于可重入锁 3):举例说明class ReentrantLockC...原创 2018-11-21 15:05:05 · 133 阅读 · 0 评论 -
Java 悲观锁和乐观锁比较
1.悲观锁 多个线程竞争应用程序的共享资源 同时只有一个线程可以获得资源的使用权,其他线程阻塞等待 获得使用权的线程释放锁后,其他线程再次竞争资源的使用权限2.乐观锁 多个线程竞争应用程序的共享资源 所有线程都可以获得资源的使用权, ...原创 2018-11-07 14:14:00 · 135 阅读 · 0 评论 -
线程基础
1.线程和进程概念 1) 进程是一个独立应用程序,会有N多个线程 2) 线程是一条执行路径 3) 进程是所有线程的集合 4) 多线程的目的 是为了提供程序执行的效率2.volatile关键字的作用 1) 线程件变量的可见性 2) 禁止指令重排3.阻塞队...原创 2018-11-19 08:43:16 · 76 阅读 · 0 评论 -
使用线程池提交任务的时候,自定义任务线程的名称
1.新建一个线程工厂类package cn.yueworld.finance.utils;import java.util.concurrent.ThreadFactory;import java.util.concurrent.atomic.AtomicInteger;public class CommonThreadFactory implements ThreadFactor...原创 2019-09-29 10:22:49 · 1201 阅读 · 0 评论