
多线程
文章平均质量分 86
一朵花花
女孩子也可以好好敲代码丫
展开
-
锁 & synchronized 关键字
本篇接着上篇 线程安全,可以先看一下上篇~~锁锁 是什么?锁的特点:锁的基本操作:锁的使用synchronized 关键字 — 监视器锁理解 synchronized 的具体使用:synchronized 的几种常见用法:举例: 两个线程尝试获取同一把锁????若两个线程分别加自己的锁(即:不是同一把锁)锁 是什么?举例理解:锁的特点:锁的特点是互斥的,同一时刻只有一个线程能获取到锁,其他的线程若也尝试获取锁,就会发生阻塞等待,一旦发生等待,需一直等到刚才的线程释放锁,此时剩下的线程再重新竞争锁原创 2021-11-28 14:18:50 · 1251 阅读 · 2 评论 -
volatile 关键字
volatile 关键字原创 2021-12-03 11:57:12 · 725 阅读 · 2 评论 -
操作系统—进程
操作系统概念操作系统是一组做计算机资源管理的软件的统称(搞管理的软件:一方面管理计算机的硬件设备,另一方面管理计算机的软件资源)目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙…等进程(Process)进程是一种操作系统中非常重要的软件资源把一个可执行程序跑起来,系统中就会创建一个对应的进程;如果这个程序执行结束了,系统就会随之销毁对应的进程 (进程就可以看成是一个程序执行的"过程")进程是操作系统对一个正在运行的程序的一原创 2021-11-22 20:56:51 · 1096 阅读 · 9 评论 -
Java 定时器
上篇提到了 阻塞队列,本篇我们将优先级队列和阻塞队列结合,得到 阻塞优先队列,以此来实现一个定时器~定时器定义应用场景定时器的实现:定时器构成代码实现:代码分析:忙等一处唤醒,两处阻塞附最终全部代码:完整的执行过程:定义定时器,是多线程编程中的一个重要 / 常用组件定时器可以强制终止请求:浏览器内部都有一个定时器,发送请求后,定时器就开始计时;若在规定时间内,响应数据没有返回,就会强制终止请求定时器,有些逻辑不想立刻执行,而是要等一定的时间之后,再来执行好比一个闹钟,在我们设定好闹钟时间后,到时原创 2021-12-14 12:51:05 · 818 阅读 · 6 评论 -
wait 和 notify
由于线程之间是抢占式执行的,因此线程之间执行的先后顺序难以预知.但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序wait( )方法:当操作条件不成熟,就等待notify( )方法:当条件成熟时,通知指定的线程来工作wait( )方法notify( )方法notifyAll( )方法...原创 2021-12-03 12:12:41 · 677 阅读 · 8 评论 -
线程的状态
前言:线程状态和进程状态是类似的,进程状态是辅助进程进行调度,线程状态是辅助线程进行调度Java 中线程的状态是通过一个 enum 来表示的线程的所有状态线程的状态是一个枚举类型 Thread.Statepublic static void main(String[] args) { for (Thread.State state : Thread.State.values()){ System.out.println(state); }}输出结果:状态说原创 2021-11-25 19:00:00 · 295 阅读 · 4 评论 -
线程安全问题【重点】
多线程带来的的风险 - 线程安全线程安全观察线程不安全线程安全的概念线程不安全的原因解决线程不安全线程安全线程安全问题是多线程所涉及到的最重要的,也是最复杂的问题观察线程不安全public class ThreadDemo14 { static class Counter{ public int count = 0; public void increase(){ count++; } } public原创 2021-11-28 14:17:36 · 5094 阅读 · 2 评论 -
Thread 类及常见方法
Thread 类及常见方法Thread 的常见构造方法:方法说明Thread( )创建线程对象Thread(Runnable target)使用 Runnable 对象创建线程对象Thread(String name)创建线程对象,并命名Thread(Runnable target,String name)使用 Runnable 对象创建线程对象,并命名举例:// Thread(String name) public class ThreadDem原创 2021-11-24 19:15:00 · 1172 阅读 · 3 评论 -
Java 阻塞队列
阻塞队列定义简单介绍 生产者—消费者 模型阻塞队列特点:定义阻塞队列,它是一个特殊的队列,是并发编程中的一个重要基础组件阻塞队列的一个典型应用场景就是 "生产者消费者模型"简单介绍 生产者—消费者 模型以包饺子为例:(假设面和馅是备好的,且 擀面杖只有一个~)方法1: A,B,C 三个人包饺子;这三个人分别进行 擀皮 + 包饺子 过程该方法的锁竞争(擀面杖只有一个)太激烈方法2: 一个人负责擀皮,另外两个负责包饺子,例:A 负责擀皮,B 和 C 负责包饺子这就是"生产者—消费者 模型"原创 2021-12-09 17:59:37 · 611 阅读 · 10 评论 -
Java 线程池
线程池线程池概念为什么使用线程池??线程池组成部分线程池 核心操作executeshutdown全部代码:线程池概念在String内部,为了进行一些优化,引入了一个"字符串常量池"线程池是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后再创建线程后自动启动这些任务为什么使用线程池??使用线程池最大的原因是可以根据系统的需求和硬件环境灵活的控制线程的数量,可以对所有线程进行统一的管理和控制,从而提高系统运行效率,避免了频繁创建 / 销毁线程的开销线程池组成部分需要管理两个内容:①要执行原创 2021-12-12 20:46:21 · 348 阅读 · 0 评论 -
单例模式 (饿汉、懒汉)
前言:单例模式,是一种常见的"设计模式"设计模式: 设计模式是一套经过反复使用的代码设计经验,目的是为了重用代码、让代码更容易被他人理解、保证代码可靠性单例模式,场景: 代码中,有些概念,不应该存在多个实例,此时应该使用单例模式来解决例: MySQL JDBC中,第一步就是创建一个 DataSourse 对象,DataSourse 对象,在一个程序中只有一个实例,不应该实例化多份DataSourse 对象可以用单例模式来解决这种场景,保证指定的类只有一个实例 (若尝试创建多个实例,直接编译就会报错原创 2021-12-08 22:55:11 · 800 阅读 · 2 评论 -
线程 & 多线程
线程 thread线程线程概念为啥要有线程?线程和进程的联系和区别线程管理多线程多线程程序缺点第一个多线程程序线程线程概念所谓的"线程",可以理解成轻量级"进程",也是一种实现并发编程的方式如果把一个进程,想象成是一个工厂,线程就是工厂中的若干个流水线为啥要有线程?可以实现并发编程单核 CPU 的发展遇到了瓶颈,要想提高算力,就需要多核 CPU,而并发编程能更充分利用多核 CPU 资源有些任务场景需要 “等待 IO”,为了让等待 IO 的时间能够去做一些其他的工作,也需要用到并发编程线程原创 2021-11-23 18:43:01 · 2528 阅读 · 7 评论 -
线程池工厂类
前言: Java提供的 Executor 都在JUC (java.util.concurrent) 包下面,主要包括:线程池工厂类Executors,线程池实现类ThreadPoolExecutor等线程池 ThreadPoolExecutor 通常都是通过 Executors 来创建的// 返回一个可根据实际情况调整线程个数的线程池Executors.newCachedThreadPool();// 创建一个固定数量的线程池Executors.newFixedThreadPool(10);原创 2022-01-09 11:00:00 · 816 阅读 · 1 评论