
java基础
文章平均质量分 55
java基础
落叶的悲哀
这个作者很懒,什么都没留下…
展开
-
死锁产生的条件及解决办法
死锁产生的条件及解决办法前言多线程编程中死锁是必须要了解的情况下面来看看产生的条件及解决办法一、死锁产生的因素?只要发生死锁,下面的因素必定会产生。1 、互斥例如 synchronized,就是互斥条件的锁。2、占有并等待例如线程1锁住了A,要抢占B等待B资源,这时候线程1就可以说是处于占有并等待的状态。3、不可抢占例如线程1锁住了A,然后要抢占B,这个时候B是不能强行抢占过来的,线程1就是不可抢占的状态。4、循环等待例如线程1锁住了A,要抢占B,线程2锁住了B要抢占A,这时候两原创 2022-04-03 15:38:05 · 383 阅读 · 0 评论 -
CompletableFuture,使用
前言jdk1.8前,使用future获取结果的情况比较多,但是这种使用方式有个缺点,就是调用future.get()的时候会阻塞主线程,如果第一个任务的future.get()一直阻塞,那么后面的结果也就一直被阻塞了。因此从1.8开始可以使用CompletableFuture去实现,多线程异步执行任务,并且在主线程最终等待所有的任务返回结果。达到多线程处理的目的。一、代码示例 public static void main(String[] args) { // 1.新建线程池原创 2022-05-21 09:36:51 · 1375 阅读 · 0 评论 -
单例模式的一些思考
单例模式的一些问题思考public class A { private volatile static A a; private A(){ } public static A getInstance(){ if(a ==null){ synchronized (A.class){ if(a==null){ a = new A(); }原创 2021-06-19 08:06:05 · 140 阅读 · 0 评论 -
多线程如何顺序输出ABC
前言记录多线程实现ABC一、原子类加循环判断package mainin.thread;import java.util.concurrent.atomic.AtomicInteger;public class Test1 { private static AtomicInteger order = new AtomicInteger(1); public static void main(String[] args) { Thread A.原创 2022-04-19 21:14:32 · 2247 阅读 · 1 评论