
多线程
文章平均质量分 59
极速小乌龟
Java开发爱好者,最近笔记都是写在了本地,没有上传。不经常登录这个,如果有问题可以联系微信15021801061
展开
-
线程唤醒机制
unpark进行许可证的发布最多只能发布一张许可证(不会累积)。如果一个方法出现两次LockSupport.park();基于LockSupport实现,无顺序要求,可以先park也可以先unpark。底层基于UNSAFE类实现。需要在lock下使用,配合condition实现,先等待才能进行唤醒。要在synchronized锁中使用,切先等待才能进行唤醒。...原创 2022-07-30 17:15:28 · 645 阅读 · 0 评论 -
线程中断方法
因为volatile能保证在多线程之间,一旦变量修改,能够立马通知到其他持有该变量的线程值被改变。所以我们可以利用volatile这个特性来实现线程中断。interrupted()查询当前线程阻塞状态,并将状态设置为false。备注操作线程不能处于sleep,wait,join,不然会抛出异常。interrupt()设置线程状态为true。isInterrupt()查询当前线程阻塞状态。...原创 2022-07-30 16:30:01 · 486 阅读 · 0 评论 -
Java8 CompletableFuture异步任务编排
在系统开发过程中我们经常会遇到很多串行化比较耗时的业务逻辑。但是很多时候如果仔细分析会发现其实很多这种串行业务部分是可以拆解为并行的。这时候我们就可以使用CompletableFuture来进行异步任务编排。举个例子假如现在有一个业务分为如下几步1.业务一耗时0.5秒2.业务二耗时0.5秒3.业务三耗时1秒4.业务四耗时0.5秒(需要用到业务一的结果)5.业务五耗时1秒(需要用到业务二或者业务三的结果)......原创 2022-07-15 14:42:58 · 1582 阅读 · 1 评论 -
Semaphore
一、简介Semaphore是在jdk1.5版本引入的,存在于juc包下面。由大佬 Doug Lea(绝对牛逼的大佬,感兴趣的可以自己百度一下) 编写。跟它一同出现的还有CountDownLatch、CyclicBarrier、concurrentHashMap和BlockingQueue。二、作用可以把它简单的理解成我们停车场入口立着的那个显示屏,每有一辆车进入停车场显示屏就会显示剩余车位减1,每有一辆车从停车场出去,显示屏上显示的剩余车辆就会加1,当显示屏上的剩余车位为0时,停车场入.原创 2021-07-10 17:12:57 · 203 阅读 · 0 评论 -
CyclicBarrier
一、简介CyclicBarrier是在jdk1.5版本引入的,存在于juc包下面。由大佬 Doug Lea(绝对牛逼的大佬,感兴趣的可以自己百度一下) 编写。跟它一同出现的还有CountDownLatch、Semaphore、concurrentHashMap和BlockingQueue。二、作用CyclicBarrier用法与CountDownLatch用法基本相似,但是功能却比CountDownLatch更加强大。它包含了CountDownLatch的计数器功能,但是与CountDo原创 2021-07-10 16:24:22 · 253 阅读 · 0 评论 -
CountDownLatch
一、简介CountDownLatch是在jdk1.5版本引入的,存在于juc包下面。由大佬 Doug Lea(绝对牛逼的大佬,感兴趣的可以自己百度一下) 编写。跟它一同出现的还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。二、作用CountDownLatch相当于一个计时器,在初始化时有一个构造函数,必须要传入一个初始值。至于它的作用我们使用一个需求来说明一下。比如现在我们有这样一个需求:我们要对一个list进行数据原创 2021-07-10 14:58:16 · 413 阅读 · 0 评论 -
Java面试题之多线程
三、多线程35. 并行和并发有什么区别?并行是多个事件同时进行,并发是多个事件在某一时间段内间隔发生.你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。36. 线程和进程的区别?进程是操作系统资源分配的基本单位,线程是任务调度和执行的基本单位.进程有独立的地址空间,一个进程崩溃后在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径,线程有自己的堆栈和局部变量.在操作原创 2021-07-02 13:11:59 · 959 阅读 · 0 评论 -
多线程情况下如何保证三个线程按顺序执行?
要求三个线程按顺序打印,第一个线程打印A,第二个线程打印B,第三个线程打印C,一共执行10轮,该怎么实现呢?package com.xingli.springlearningdemo.lock;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * description:原创 2021-06-18 09:39:17 · 358 阅读 · 0 评论 -
Java项目中多线程的使用
一、线程池创建如果需要在项目中使用多线程,那么一定要先创建线程池。因为线程池可以达到线程复用,节省反复创建和销毁的开销。提升性能。就跟平时项目中使用的数据库连接池是一个道理。...原创 2021-06-11 16:02:39 · 2763 阅读 · 1 评论 -
JVM知识点
GC和GC Tuning作者:马士兵教育 http://mashibing.comGC的基础知识1.什么是垃圾C语言申请内存:malloc freeC++: new deletec/C++ 手动回收内存Java: new ?自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种类型的问题:忘记回收多次回收没有任何引用指向的一个对象或者多个对象(循环引用)...转载 2020-04-23 08:38:11 · 497 阅读 · 0 评论 -
线程创建的几种方式
1.继承Thread类package com.xingli.threadDemo;/** *@ClassName MyThead *@Description 线程实现的方式第一种:继承thread类 *@Author William *@Date 2019/8/6 11:44 *@Version 1.0 */public class MyTheadTest { pu...原创 2019-09-18 17:39:46 · 280 阅读 · 0 评论