多线程
Solid-Snaker
比你优秀的人还在努力,那你努力还有啥用
展开
-
什么是线程池?线程池ThreadPoolExecutor使用及其原理又是什么?看完不懂你来找我!
线程池,顾名思义,用来存放线程的一个容器先了解一下线程的生命周期我们为什么要用线程池?技术的发展无非就是需求推动的,而技术领域的需求大部分都是快!再快!更快!那么线程池出现的需求也就是痛点是什么呢?第一、线程的创建和销毁是要占用一定的资源的,创建线程会直接向系统申请,调用系统函数进行分配资源。操作系统给线程分配内存、列入调度,同时线程还要进行上下文的切换。第二、在Java中,线程的线程栈所占用的内存在Java堆外,不受Java程序控制,只受系统资源限制,默认一个线程的线程栈大小是1M(当让.原创 2020-05-13 02:22:55 · 2563 阅读 · 41 评论 -
使用BlockingQueue的生产者消费者Demo
一个生产者消费者的Demo,不要再用synchronized或者lock了,那只是帮助你了解原理,生产大部分还是用的BlockingQueue队列。其实底层也是用ReentrantLock加的锁。package com.solid.demo.blockQueueTest;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurr.原创 2020-05-10 17:11:32 · 1721 阅读 · 4 评论 -
一个简单的死锁demo以及死锁分析
废话不多说,直接贴上demo代码:import java.util.concurrent.TimeUnit;public class DeadlockTest { public static void main(String[] args) { ResourceDeadlockTest resourceDeadlockTest = new ResourceDeadlockTest(); String a = "suoA"; String b =原创 2020-05-10 16:44:36 · 1838 阅读 · 2 评论