![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
身披品如
这个作者很懒,什么都没留下…
展开
-
多线程编程(八)volatile关键字
volatile关键字目录volatile关键字1. 作用2. 什么时候用1. 作用一个共享变量(类的成员变量,类的静态变量)被volatile修饰后,将会存在两层语义保证了不同线程对这个变量的可见性,即:一个线程对这个值修改了后,另一个线程like可见(注意:不保证原子性)禁止指令重排序(保证变量所在行的有序性)2. 什么时候用对变量的写操作不依赖于当前值该变量没有包含在具有其他变量的不变式当中如: volatile int i , int j;...原创 2020-11-15 16:50:33 · 78 阅读 · 0 评论 -
多线程编程(七)锁Lock
锁Lock目录锁Lock1. 两大锁接口2. 可重入锁3. 读写锁1. 两大锁接口Lock:支持重入、公平等锁的规则,实现类:ReentrantLock,ReadLock,WriteLockReadWriteLock :接口定义读取者共享,写入者独占的锁,实现类:ReentrantReadWriteLock2. 可重入锁不可重入锁:即线程请求他已经拥有的锁时会阻塞可重入锁:即线程可以进入他已经拥有的锁的同步代码块测试代码public class ReentrantLockTes原创 2020-11-15 14:32:37 · 97 阅读 · 0 评论 -
多线程编程(二)线程的生命周期
线程的生命周期目录线程的生命周期1. 分为5个阶段1.1 新建1.2 就绪1.3 运行1.4 阻塞1.4 销毁2. 常用方法2.1 getPriority2.2 setPriority2.3 isAlive2.4 join2.5 sleep2.6 yield2.7 wait2.8 notify2.8 notifyAll1. 分为5个阶段1.1 新建就是刚使用new方法,new出来的线程1.2 就绪就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资原创 2020-11-14 17:22:31 · 73 阅读 · 0 评论 -
多线程编程(一)创建线程的四种方式
创建线程的四种方式目录创建线程的四种方式1. 继承Thread类1.1 创建线程类1.2 测试方法1.3 查看执行结果2. 实现Runable接口2.1 创建线程类2.2 测试方法2.3 查看执行结果3. 实现Callable接口3.1 创建线程类3.2 测试方法3.3 FutureTask 常用方法3.3.1 get()方法3.3.2 get()执行测试3.3.3 cancel()方法3.3.4 cancel()执行测试4. 线程池创建4.1 newCacheThreadPool4.2 ne原创 2020-11-14 17:02:30 · 96 阅读 · 0 评论 -
并发编程之创建线程的四种方式
目录继承Thread类步骤代码实现Runable接口步骤代码使用Callable和Future创建线程步骤代码使用Executor框架创建线程池代码继承Thread类步骤定义一个Thread类的子类,重写run方法,将相关逻辑实现,run()方法就是线程要执行的业务逻辑方法创建自定义的线程子类对象调用子类实例的star()方法来启动线程代码public class MyThread { public static void main(String[] args) {原创 2020-09-19 17:14:07 · 77 阅读 · 0 评论 -
并发编程之线程的状态和基本操作
目录创建线程的四种方式线程的状态和生命周期线程状态的基本操作interruptedjoinsleepyield守护线程和用户线程守护线程和用户线程简介:那么守护线程和用户线程有什么区别呢?守护线程详解线程死锁认识线程死锁形成死锁的四个必要条件:如何避免线程死锁创建线程的四种方式继承Thread类实现Runable接口使用callable和future创建线程使用Executor框架创建线程池线程的状态和生命周期Java线程在运行的生命周期的指定时刻只可能存在如下6种不同的状态状态原创 2020-09-19 16:38:44 · 124 阅读 · 0 评论