
多线程
lemon20120331
这个作者很懒,什么都没留下…
展开
-
等待唤醒机制和定时器
等待唤醒机制(Wait和Notify) public class TestDemo01 { public static void main(String[] args) throws InterruptedException { //1.让线程进入无限等待 //锁对象 Object obj = new Object(); //线程1 new Thread(new Runnable() { @Ove原创 2020-06-24 10:57:33 · 236 阅读 · 0 评论 -
线程的六大状态
1.线程的六种状态 新建状态(New) 刚刚创建的并且未调用start方法的线程 可运行状态(Runnable) 只有新建状态下的线程才能调用start方法,然后线程由新建状态进入可运行状态 锁阻塞状态(Blocked) 当前线程运行到需要锁对象时,当前锁对象已经被其他线程持有,那么当前线程进入锁阻塞状态! 限时等待状态(Timed_waiting) 当前线程执行到Thread.sleep(毫秒)时,当前线程进入限时等待状态! 无限等待状态(Waiting) 线程如何进入Waiting(无原创 2020-06-23 19:11:28 · 123 阅读 · 0 评论 -
死锁
1. 什么是死锁 两个线程,两个锁对象 线程A获取锁对象1,线程B获取锁对象2, 线程A还需要锁对象2,才能执行 线程B还需要锁对象1,才能执行 线程A和B就相互等待对象释放锁对象,这种情况称为死锁! public class DeadLockDemo { public static void main(String[] args) { //1.两个锁对象 Object obj1 = new Object(); Object obj2 = new Object(); //2.两个线程 //线程A new原创 2020-06-23 19:06:32 · 162 阅读 · 0 评论 -
线程池
1. 线程池的思想 我们平时使用线程时,都现场创建,执行任务,执行完毕之后销毁线程,这样的大量时间浪费在线程的创建和销毁上了!! 提出了一种方式: 创建线程,执行任务之后不销毁,继续使用这个线程执行下一个任务,这就是线程池的思想! 2. 线程池介绍 3. 线程池的使用 线程池的顶层接口: java.util.concurrent.Executor 线程池的子接口: java.util.concurrent.ExecutorService 线程池的工具类: java.util.concurre原创 2020-06-23 19:03:33 · 93 阅读 · 0 评论 -
多线程并发包
什么是并发包(JDK1.5提出): 收集了各种专门在多线程情况下使用,并且可以保证线程安全的一些类 1. CopyOnWriteArrayList ArrayList是线程不安全的 public class MyThread extends Thread { public static ArrayList<Integer> list = new ArrayList<>();//线程不安全的 @Override public void run()原创 2020-06-22 12:26:50 · 355 阅读 · 0 评论 -
多线程并发的情况下可能存在的安全问题
a.可见性问题 主内存的变量更新之后,工作内存中副本没有立刻得到最新的值,不可见性 b.有序性问题 public static int a = 0; public static boolean b = false; 单线程中代码重排是没有影响的,但是多线程中代码重排对结果有影响的,代码的无序性 c.原子性问题 a++操作,分成三步: a.获取a b.增加a c更新a,这三步操作可能被其他线程打断,不能保证原子性 第一章 volatile关键字【理解】 volatile是什么 是一个关键字,用于原创 2020-06-22 11:35:25 · 858 阅读 · 0 评论 -
高并发和线程安全
高并发及线程安全的介绍 高并发: 是指在某个时间点上,有大量的用户(线程)同时访问同一资源 线程安全:在某个时间点上,当大量用户(线程)访问同一资源时,由于多线程运行机制的原因,可能会导致被访问的资源出现"数据污染"的问题 多线程的运行机制【内存方面] 多线程安全性问题-可见性 多个线程拥有独立的栈,但是堆是共享的 我们一般称为独立的栈是线程的工作内存,共享的堆一般称为主内存 结论: 成员变量和共享变量保存主内存的,局部变量保存到工作内存中的 多线程的安全性问题-有序性 多线程的安全性问题-原原创 2020-06-21 19:15:18 · 185 阅读 · 0 评论 -
多线程简介
1.1 并行和并发【理解】 并行: 两个事件在同一时刻都在执行(同时执行) 并发: 两个事件在同一时间段内都在执行,但是在某个时刻只有一个在执行(交替执行) 1.2 进程和线程【理解】 进程:正在内存中运行的程序,称为进程!!! 线程:一个进程中用于完成某个任务的执行单元!!! 一个进程中可以有一到多个线程,如果有1个以上的线程,这种进程我们一般称为多线程进程!! 进程和线程的一些区别【了解】 线程属于进程的!!! 每个进程拥有独立的内存空间,独立栈独立堆… 同一个进程的多个线程, 分别向原创 2020-06-21 19:04:04 · 116 阅读 · 0 评论