![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 79
bingbingYang_88
这个作者很懒,什么都没留下…
展开
-
线程池如何知道一个线程是否执行完成
当我们把一个任务丢给线程池执行的时候,线程池会调度工作线程来执行run方法。当run执行结束后,也就意味着这个任务完成了。所以线程池中的工作线程是通过同步调用任务的run()方法并且等待run()方法完成后。原创 2024-01-11 15:09:57 · 495 阅读 · 0 评论 -
一文快速理解java多线程的4种实现方式
一文快速理解java多线程的4种实现方式继承Thread实现Runnable实现Callable接口通过FutureTask包装器来创建Thread线程创建线程的三种方式对比通过线程池创建线程,使用线程池接口ExecutorService结合Callable、Future实现有返回结果的多线程拒绝策略默认AbortPolicy()DiscardPolicyDiscardOldestPolicyCallerRunsPolicysubmit()和execute()区别executesubmit()两者的区别定长原创 2022-04-23 16:45:10 · 653 阅读 · 0 评论 -
腾讯面试之--请你设计一个实现线程池顺序执行
背景小编可开心啦,屁颠屁颠的把ExecutorService executor = Executors.newSingleThreadExecutor();单例线程的方案给说出来啦;顺便把代码也贴上。SingleThreadExecutorpackage com.evan.springboot.study;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @auth原创 2020-05-26 11:31:20 · 612 阅读 · 0 评论 -
线程池的五种状态和线程的6种状态
线程池的五种状态running,showdown,stop,Tiding,Terminatedruning:线程池处于运行状态,可以接受任务,执行任务,创建线程默认就是这个状态。showDown调用showdown()函数,不会接受新任务,但是会慢慢处理完堆积的任务。Stop调用showdownnow()函数,不会接受新任务,不处理已有任务,会中断现有任务。Tiding当线程池状态为showdown或者stop,任务数量为0,就会变为tidying。这个时候会调用钩子函数termina原创 2020-05-21 16:19:57 · 945 阅读 · 0 评论 -
读懂这篇文章,带你快速理解synchronized实现原理及锁升级过程,干货满满
1,用法synchronized可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。synchronized的三种方式:1,作用于实例方法,当前实例枷锁。进入同步代码前要获得当前实例的锁。2,作用于静态方法,当前类枷锁。进去同步代码前要获得当前类对象的锁。3,作用于代码块,对括号里配置的对象加锁。2,实现原理java对象头synchronized用的锁存在对象头里,Java对象头里的MarkWord默认存储对象的HashCode,原创 2020-05-16 18:22:20 · 210 阅读 · 0 评论 -
读懂本篇文章带你快速理解CountDownLatch
CountDownLatch概念countDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起线程之间的通信(而不是用作互斥的作用)countDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己的任务后,计数器的值就会减一。当计数器的值为0时,表示所有线程都已经完成一些任务,然后在countDownLatch上等待的线程就可以恢复执行接下来的任务。CountDownLatch的用法原创 2020-05-14 14:12:29 · 175 阅读 · 0 评论 -
四种线程池拒绝策略-面试中真的这么香吗
线程池,相信很多人都有用过,没用过相信的也有学习过。但是,线程池的拒绝策略,相信知道的人会少许多。四种线程池拒绝策略ThreadPoolExecutor.AbortPolicy: 默认拒绝策列丢弃任务并抛出RejectedExecutionException异常。ThreadPoolExecutor.DiscardPolicy:丢弃任务,但是不抛出异常。ThreadPoolE...原创 2020-05-07 18:45:26 · 303 阅读 · 0 评论 -
一篇文章读懂-线程池原理
什么是线程池Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁所造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还...原创 2020-05-06 14:17:30 · 309 阅读 · 0 评论 -
多线程之间如何实现通信
多线程之间如何通讯wait、notify、notifyAll()方法lock停止线程多线程之间如何实现通讯什么是多线程之间通讯?多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。画图演示需求:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作。package com.evan.springboot.concurrentD...原创 2020-05-04 12:02:07 · 1447 阅读 · 0 评论 -
12306是抢票原理分析-多线程之间实现同步
理解线程安全?synchronized用法死锁Java内存模型VlolatileThreadLock什么是线程安全当多个线程同时共享,同一个全局变量或者静态变量,做写得操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。举个例子,同时售卖火车票package com.evan.springboot.concurrentDemo.ticket...原创 2020-05-03 10:11:55 · 3174 阅读 · 0 评论 -
一篇文章带你快速入门 多线程
本文的目录线程与进程为什么要使用多线程多线程的使用场景多线程的创建方式线程的生命周期线程与进程的区别进程是一个运行的程序,进程是所有线程的集合,每个线程是进程的一条执行路径每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程...原创 2020-05-02 22:21:44 · 135 阅读 · 0 评论 -
面试不可不知的阻塞与非阻塞,同步与异步的概念
阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。同步与异步同步和异步关注的是消息通信机制*(synchronous communication/asynchronous communication)*所谓同步,就是在发出一个“调用”时,在没有得到结果之前,该“调用”就不返回。但是一旦调用返回,就得到了返回值。换句话说,就是由调用者主动等待...原创 2020-05-01 22:19:44 · 163 阅读 · 0 评论