多线程并发
banboo998
Java 后端开发
展开
-
JAVA面试:JUC
AQS原创 2021-03-20 18:47:19 · 116 阅读 · 0 评论 -
Java 面试 :countdownlatch
public class casTest { public static AtomicInteger atomicInteger; public static CountDownLatch countDownLatch = new CountDownLatch(10000); public static void main(String[] args) throws InterruptedException { long start = System.currentT原创 2021-03-06 18:17:25 · 111 阅读 · 0 评论 -
Java 面试: synchronized原理
说到synchronized,我们提到,Java 对象的对象头,Java对象头中包含一个Mark word 内存取,当我们的对象被synchronized 当成对象锁时,Mark word 就会指向要一个 Monitor对象,这个是操作系统提供的一个管程对象,这个对象。简单说来这个对象有三个主要的属性,Owner,EntryList,WaitSet。其中Owner 使用来指向当前拥有对象锁的线程的。这个就是synchronized的原理。...原创 2021-03-04 22:57:38 · 124 阅读 · 1 评论 -
Java 面试:进程与线程的区别
进程说到进程与线程的区别,首先我们要知道什么是进程什么是线程。 说到进程,我们要只要一个概念,程序。 程序是由指令和数据组成。程序的指令要加载至cpu,程序的数据要加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启这个程序的一个进程。 进程可以视为程序的一个实例,有的程序可以有多个进程实例,有的则规定只能有一个进程实例线程一个线程就是一个指令流,将指令流中的一个个指令交给cpu运行原创 2021-03-04 22:07:08 · 108 阅读 · 1 评论 -
面试: Java线程池中为什么要使用阻塞队列?
线程池是采用生产者-消费者模式设计的线程池为消费者。在线程池中活跃线程数达到corePoolSize时,线程池将会将后续的task提交到BlockingQueue中, (每个task都是单独的生产者线程)进入到堵塞对列中的task线程会wait() 从而释放cpu,从而提高cpu利用率。...原创 2021-03-03 21:50:26 · 1473 阅读 · 1 评论 -
面试: Java线程池
引入线程池原因我们在工作中一般不会直接创建线程,原因:虽然在 Java 语言中创建线程看上去就像创建一个对象一样简单,只需要 new Thread() 就可以了,但实际上创建线程远不是创建一个对象那么简单。创建对象,仅仅是在 JVM 的堆里分配一块内存而已;而创建一个线程,却需要调用操作系统内核的 API,然后操作系统要为线程分配一系列的资源,这个成本就很高了,所以线程是一个重量级的对象,应该避免频繁创建和销毁。于是就有了线程池,利用线程池把资源池化,使得线程资源能服用,可以避免频繁地创建和销毁。线程原创 2021-03-03 21:25:19 · 148 阅读 · 3 评论 -
java并发多线程,为什么每个线程都是先加后减,会出现多减情况呢?⚠️做图从cup时间片角度解释
⚠️注意因为,t1线程在添加元素时,会先读取地址,再添加,这时,读取地址完,没有添加就失去cup时间片,这是就会产生并发错误(t2线程也读取同样的地址让后t1,t2添加到同一个位置所以造成多删的情况)public static void main(String[] args) throws CloneNotSupportedException { Unsafe unsafe = new Unsafe(); Thread t1=new Thread(()->{原创 2020-08-15 12:01:39 · 1180 阅读 · 0 评论 -
java多线程的6种线程状态以及这6种状态间的转换关系,是怎么转换的,转换时发生了什么[面试必备]
线条1new 线程 进入NEW ,start之后进入RUNNABLE线条2获取了锁的线程执行wait,线程从RUNNABLE–>WAITING线程被打断 interrupt成功争夺到锁资源 WAITING–> RUNNABLE没有争夺到锁资源 WAITING–> RUNNABLE–>BLOCKED线程被notify之后成功争夺到锁资源 WAITING–> RUNNABLE没有争夺到锁资源 WAITING–> RUNNABLE–>..原创 2020-08-21 00:32:20 · 1124 阅读 · 0 评论