多线程
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 · 211 阅读 · 0 评论 -
线程的六大状态
1.线程的六种状态新建状态(New)刚刚创建的并且未调用start方法的线程可运行状态(Runnable)只有新建状态下的线程才能调用start方法,然后线程由新建状态进入可运行状态锁阻塞状态(Blocked)当前线程运行到需要锁对象时,当前锁对象已经被其他线程持有,那么当前线程进入锁阻塞状态!限时等待状态(Timed_waiting)当前线程执行到Thread.sleep(毫秒)时,当前线程进入限时等待状态!无限等待状态(Waiting)线程如何进入Waiting(无原创 2020-06-23 19:11:28 · 110 阅读 · 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.两个线程//线程Anew原创 2020-06-23 19:06:32 · 141 阅读 · 0 评论 -
线程池
1. 线程池的思想我们平时使用线程时,都现场创建,执行任务,执行完毕之后销毁线程,这样的大量时间浪费在线程的创建和销毁上了!!提出了一种方式: 创建线程,执行任务之后不销毁,继续使用这个线程执行下一个任务,这就是线程池的思想!2. 线程池介绍3. 线程池的使用线程池的顶层接口: java.util.concurrent.Executor线程池的子接口: java.util.concurrent.ExecutorService线程池的工具类: java.util.concurre原创 2020-06-23 19:03:33 · 87 阅读 · 0 评论 -
多线程并发包
什么是并发包(JDK1.5提出):收集了各种专门在多线程情况下使用,并且可以保证线程安全的一些类1. CopyOnWriteArrayListArrayList是线程不安全的public class MyThread extends Thread { public static ArrayList<Integer> list = new ArrayList<>();//线程不安全的 @Override public void run()原创 2020-06-22 12:26:50 · 334 阅读 · 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 · 824 阅读 · 0 评论 -
高并发和线程安全
高并发及线程安全的介绍高并发: 是指在某个时间点上,有大量的用户(线程)同时访问同一资源线程安全:在某个时间点上,当大量用户(线程)访问同一资源时,由于多线程运行机制的原因,可能会导致被访问的资源出现"数据污染"的问题多线程的运行机制【内存方面]多线程安全性问题-可见性多个线程拥有独立的栈,但是堆是共享的我们一般称为独立的栈是线程的工作内存,共享的堆一般称为主内存结论: 成员变量和共享变量保存主内存的,局部变量保存到工作内存中的多线程的安全性问题-有序性多线程的安全性问题-原原创 2020-06-21 19:15:18 · 157 阅读 · 0 评论 -
多线程简介
1.1 并行和并发【理解】并行: 两个事件在同一时刻都在执行(同时执行)并发: 两个事件在同一时间段内都在执行,但是在某个时刻只有一个在执行(交替执行)1.2 进程和线程【理解】进程:正在内存中运行的程序,称为进程!!!线程:一个进程中用于完成某个任务的执行单元!!!一个进程中可以有一到多个线程,如果有1个以上的线程,这种进程我们一般称为多线程进程!!进程和线程的一些区别【了解】线程属于进程的!!!每个进程拥有独立的内存空间,独立栈独立堆…同一个进程的多个线程, 分别向原创 2020-06-21 19:04:04 · 101 阅读 · 0 评论