
线程池
文章平均质量分 61
一写代码就开心
一起学编程呀,头秃的那种。
学完之后,找一份java,python开发的工作不成问题
展开
-
多线程笔记(十)集合 的线程安全
目录1 ArrayList()集合(有线程安全问题)2 如何解决以上的线程安全的问题2.1 使用Vector集合(没有线程安全问题)2.2 使用集合工具类2.3 CopyOnWriteArrayList(可以看到底层的集合是没有加锁的)1 ArrayList()集合(有线程安全问题)他是线程不安全的,我们创建这个对象,调用他的add方法往里面加东西,我们看源码,可以看到这个add方法是没有加锁的,所以在多线程往这个集合里面加数据的时候,会出现并发修改异常就是我们一边线程往list里面加东西,一边取东原创 2022-05-24 18:39:31 · 224 阅读 · 0 评论 -
多线程笔记(九)线程之间的通信
目录1 虚假唤醒2 synchronized之间的通信3 lock之间的通信4 线程之间的定制化通信4.1 需求4.2 代码实现1 虚假唤醒我们多个线程之间通信,有wait() notify(),notifyall()方法,但是wait()方法是在哪里睡,之后被唤醒的时候就在哪里醒来,所以我们的wait()方法是不能在if里面,使用while,当唤醒的时候,会重新判断条件,if是不会判断的;2 synchronized之间的通信wait(),notifyAll(),notify()//第一步 创原创 2022-05-24 18:10:56 · 134 阅读 · 0 评论 -
多线程笔记(八)什么是死锁,Lock 锁,synchronize 和 lock区别
目录死锁Lock 锁多个线程操作同一个资源(线程不安全)代码使用 Lock 锁synchronize 和 lock区别死锁通俗理解现在有两个东西,一个是汽车,一个是火车,小明已经拿上汽车了,但是他想要火车,小红已经有火车了,但是他想要汽车,等在等对方放手之后,就可以拿到自己想要的,但是谁也不想要第一个放开,所以都在等对方放开,就出现了僵持的情况Lock 锁Lock 就是一个接口多个线程操作同一个资源(线程不安全)代码买票的例子public class shiLock {原创 2021-08-22 21:01:38 · 330 阅读 · 0 评论 -
多线程笔记(七)JUC 这个包下有很多的类,其中CopyOnWriteArrayList是一个安全的集合类
这里写目录标题背景代码实现背景ArrayList 这个集合本来就是线程不安全的,当我们多线程跑数据,往ArrayList里面添加数据的时候,前面的数据有可能被覆盖,为了解决这个问题,我们使用synchronized关键字。现在我们还可以在不使用关键字的情况下往集合里面添加数据,并且数据是安全的,我们就可以使用CopyOnWriteArrayList这个数组JDK1.5引入的J.U.C包中,又实现了一个线程安全版的ArrayList——CopyOnWriteArrayList。代码实现public原创 2021-08-22 20:27:38 · 198 阅读 · 0 评论 -
多线程笔记(六)synchronized 方法 和 synchronized 块
目录synchronized 方法synchronized 块synchronized 方法这个就是一个关键字,在我们的方法上加这个关键字,那么这个方法就被同步了这个是锁的 这个方法的类 本身synchronized 块这个同步监视器 的值就是对哪个对象进行增删改查 那么这个参数就是哪个值这个就是需要锁 变化的量,这个变化的量 就是需要增删改查的对象...原创 2021-08-22 20:17:39 · 211 阅读 · 0 评论 -
多线程笔记(五)线程的同步,线程不安全
目录背景线程同步队列 和 锁线程同步形成的条件synchronized 的问题线程不安全ArrayList 线程不安全的代码实现总结背景多个线程操作同一个对象,比如买票,这个就是不安全的线程同步就是多个线程进行排队多线程操作同一个对象的时候,就是并发队列 和 锁上厕所需要排队,在厕所里面的人需要锁住厕所,不让其他排队的人进来线程同步形成的条件队列 + 锁synchronized 的问题线程不安全我们之前写的代码,买票的时候,会出现有人买了负数的票,这个是不正常的,是线程原创 2021-08-21 17:00:26 · 232 阅读 · 0 评论 -
多线程笔记(四)线程的状态,线程的停止,线程的休眠,线程礼让,join,线程优先级,守护线程
目录线程线程方法线程的停止(建议)线程的休眠线程礼让join线程的优先级守护线程线程线程方法线程的停止(建议)线程的休眠线程礼让A和B 两个线程,当CPU执行B的时候,B进行礼让,那么就离开cpu,这个时候B就变为就绪状态,CPU就重新 在A线程和B线程之间进行选择,有可能还是让B线程执行,这个时候就没有礼让成功。join相当于插队线程的优先级利用代码设置线程的优先级 和 获取线程的优先级public class Priority { public s原创 2021-08-21 16:28:35 · 188 阅读 · 0 评论 -
多线程笔记(三)Lamda表达式,如何推导出这个表达式的书写方法
目录为什么要使用这个表达式什么叫做函数式接口推到出lamda表达式最开始写代码静态内部类局部的内部类匿名内部类lambda将参数类型简化掉将括号也去掉将花括号去掉为什么要使用这个表达式总之就是为了简化我们的代码什么叫做函数式接口定义记住:必须是一个接口里面只有一个抽象方法推到出lamda表达式必须是函数式接口 才可以使用这个表达式最开始写代码之前我们写代码,是先写一个接口,写一个类实现这个接口,重写里面的方法。在主函数里面创建这个类的对象,执行里面的方法public class原创 2021-08-21 15:08:15 · 179 阅读 · 0 评论 -
多线程笔记(二)线程的3种创建方式,利用线程抢票的逻辑与代码
目录创建线程继承Thread 类实现Runnable 接口利用线程抢票思路代码实现callable接口创建线程继承Thread 类class PrimeThread extends Thread { @Override public void run() { for(int i = 0; i<20;i++){ System.out.println("我是多线程"+i); } } public st原创 2021-08-21 14:02:49 · 294 阅读 · 0 评论 -
多线程笔记(一)程序,进程,线程分别如何理解
目录什么叫做多任务什么叫做多线程普通方法和多线程的执行过程的图解程序,进程,线程总结什么叫做多任务一个人可以在吃饭的同时,玩手机,这个就是在同一时间做不同的事情,这个就是多任务什么叫做多线程可以理解为多个路,如果现在有10辆车,要从A点到B点,如果只有一条路,那么10辆车是需要排队的,但是如果现在有10条路,那么同一时间,10辆车就同时到达了,不需要排队,这个就是多线程。多个路同时执行普通方法和多线程的执行过程的图解程序,进程,线程我们代码写的系统就是程序,程序是死的让我们的程序跑起来,原创 2021-08-21 12:46:00 · 181 阅读 · 0 评论