
0702【java线程、并发】
文章平均质量分 92
主要包含书籍《Java并发编程艺术》、《并发编程实战》、视频、博客学习笔记
努力的阳光蓝孩
学习一时爽,一直学习一直爽
展开
-
线程池工作原理
一、线程池默认工作流程1、线程在有任务的时候会常见核心的线程数corePoolSize2、当线程满了(有任务但是线程被使用完)不会立即扩容,而是放到阻塞队列中,当阻塞队列满了之后才会继续创建线程。3、如果队列满了,线程数达到最大线程数则会执行拒绝策略。4、当线程数大于核心线程数事,超过KeepAliveTime(闲置时间),线程会被回收,最终会保持corePoolSize个线程。二、五种实现1、newSingleThreadExecutor()池里只有一条线程,如果线程因为异常而停止,会自动原创 2020-11-08 12:22:00 · 43408 阅读 · 0 评论 -
并发学习笔记一、C10K 问题是什么?
一介绍1、C10K 问题。单机一万并发量2、并发10k 和100 的区别关键在于CPU3、创建的进程线程多了,数据拷贝频繁(缓冲I/O、内核将数据拷贝到用户进程空间、阻塞), 进程/线程上下文切换消耗大,导致系统奔溃。4、解决C10K问题的关键就是尽可能减少这些CPU等核心计算资源消耗,从而榨干单台服务器的性能,突破C10K问题所描述的瓶颈。https://www.oschina.net/question/3915715_2311055https://blog.51cto.com/1原创 2020-05-19 09:18:33 · 838 阅读 · 0 评论 -
4种常用线程锁synchronized、ReentrantLock、Semaphore、AtimicInteger的特点,性能比较、使用场景
一、背景介绍 1、在进程中的同时运行多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间, 线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。 2、在Java并发编程中,经常遇到多个线程访问同一个 共享资源 ,开发者必须考虑如何维护数据一致性,这就是Java锁机制(同步问题)的来源。 ...原创 2020-05-05 08:43:58 · 656 阅读 · 1 评论 -
线程的生命周期
一:定义 线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流, 一个进程中可以并发多个线程,每条线程并行执行不同的任务。 二、线程的生命周期 1、新建状态(执行start()方法) => 就绪状态(系统调度,获得CPU资源 执行run...原创 2020-05-05 08:37:16 · 279 阅读 · 0 评论 -
线程实现方式三、通过callable 和 Future 创建线程
1)创建Callable 接口的实现类,并实现call方法, 该call()方法作为线程执行体,并且有返回值。2)创建Call 实现类的实例, 使用FutureTask 类来包装Callable对象,该FutureTask对象封装了该Callable 对象的call() 方法返回值。3)使用FutureTask对象作为Thread对象的target 创建并启动新线程。4)调用Future ...原创 2020-05-05 08:33:04 · 1055 阅读 · 0 评论 -
线程实现方式二 、通过实现Runnable接口
package com.hao.javabasis.test.thread; public class ThreadOne implements Runnable{ private Thread thread; private String threadName; public ThreadOne( String thr...原创 2020-05-05 08:31:24 · 273 阅读 · 0 评论 -
Lock同步代码的方式
package com.hao.javabasis.test.thread;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;@Slf4jpublic class TestThread {...原创 2020-05-05 08:23:07 · 250 阅读 · 0 评论 -
多线程学习笔记二、代码分析
package com.zenlayer.javabasis.test.thread;import java.math.BigDecimal;/** * @author haojunhu * @date 2020-04-24 */public class AccountTest { public static void main(String[] args) { ...原创 2020-05-05 08:01:26 · 182 阅读 · 0 评论 -
多线程学习笔记二 、代码分析
package com.zenlayer.javabasis.test.thread;import java.math.BigDecimal;/** * @author haojunhu * @date 2020-04-24 */public class AccountTest { public static void main(String[] args) { ...原创 2020-05-05 08:17:09 · 121 阅读 · 0 评论 -
Callable、Runnable接口与Threadl类比较
如何理解Callable接口的创建方式比实现Runnable接口多线程的方式更强大1、run 方法可以有返回值。2、方法可以抛出异常,被外面的操作捕获异常,获取异常信息3、支持泛型的返回值4、需要借助FutureTask,比如获取返回结果package com.hao.javabasis.test.thread;import java.util.concurrent.Calla...原创 2020-05-05 08:14:56 · 197 阅读 · 0 评论 -
线程实现方式一 、通过继承Thread类本身
package com.zenlayer.javabasis.test.thread;import java.util.Objects;/** * 继承自 Thread */public class ThreadTwo extends Thread { private Thread thread; private String name; public ...原创 2020-05-05 08:11:14 · 228 阅读 · 0 评论 -
经典的生产者消费者问题
package com.zenlayer.javabasis.test.thread;/** * @author haojunhu * @date 2020-04-26 */public class ProductorTest { // 生产者消费者问题 /** * 分析 * 1、是否为多线程问题 生产者线程 、消费者线程 * 2、是...原创 2020-05-01 23:04:40 · 386 阅读 · 0 评论 -
多线程学习笔记一 基本概念
并行 与并发 并行:多个CPU同时执行多个任务, 并发:一个CPU(采用时间片)同时执行多个任务多线程 一、背景 二、优点 1、提高计算机程序的响应,对图形化界面更有意义,可增强用户体验。 2、提高计算机系统CPU的利用率 3、改善程序结构。将即长又复杂的进程分为多个线程,独立运行,有利于理解和修改。 三、线程的调度 ...原创 2020-05-03 09:29:08 · 124 阅读 · 0 评论