![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程
文章平均质量分 54
记录多线程学习过程
路窑
这个作者很懒,什么都没留下…
展开
-
java线程池之四种拒绝策略
什么时候执行拒绝策略:1、ThreadPoolExecutor.AbortPolicy()默认的拒绝策略,当任务数大于线程池最大容量+阻塞队列时,丢弃任务并抛出RejectedExecutionException异常。2、ThreadPoolExecutor.DiscardPolicy丢弃任务,但是不抛出异常3、ThreadPoolExecutor.DiscardOldestPolicy()该策略下,抛弃进入队列最早的那个任务,然后尝试把这次拒绝的任务放入队列。丢弃队列最前面的任务,然原创 2021-07-19 20:13:05 · 306 阅读 · 0 评论 -
Java线程池之七大参数
在自定义线程池或者使用Executors创建线程池时,都会使用到ThreadPoolExecutor这个类的构造方法进行线程池的创建,而这个类的构造方法中就包含著名的七大参数(1)corePoolSize:核心池的大小。在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务,除非调用了prestartAllCoreThreads()或者prestartCoreThread()方法,从这2个方法的名字就可以看出,是预创建线程的意思,即在没有任务到来之前就创建c原创 2021-07-19 16:46:52 · 330 阅读 · 0 评论 -
Java 线程通信中的if和while的理解与使用
多个线程之间的共享资源:Money多个线程使用Money这个资源结果分析:将逻辑判断if改为while循环,为if时,被阻塞的线程重新获得CPU的执行器执行时直接从阻塞的点向后执行;为while时,被阻塞的线程执行时同样也是直接从阻塞的点向后执行,但是它为while循环体,不会立刻跳出循环体,还是会先判断,若满足条件还是会执行while循环,然后被堵塞。说明:java的多线程执行默认是抢占式的,这也是为什么会出现输出线程名字(如:大儿子)而(大儿子线程)未执行消费操作,被二儿子线程抢占了CP原创 2021-07-17 12:09:43 · 317 阅读 · 2 评论 -
Java 多线程同步中while(true)位置的理解
在学习多线程同步问题的时候,经常使用多窗口同时买票的例子进行理解学习当while(true)不在同步函数内部时:3个窗口交替卖票while(true)不在同步代码块中:当窗口一获取到CPU执行权后,进入while(true)语句,执行同步方法,然后执行sleep方法,进程堵塞,假设此时窗口3进程获取到CPU执行权,进入while(true)语句,执行ticket.sale()同步方法,但是由于未获取到同步锁(窗口一线程执行的是sleep方法,不会释放锁对象)只能进入堵塞状态,当窗口1自动苏醒后继续执原创 2021-07-16 12:04:14 · 2251 阅读 · 0 评论