
thread
Layber
头发还多,所以技术很菜!
展开
-
java多线程:ExecutorService方法详解
1.ExecutorService是java多线程并发包下比较底层也是比较重要的接口,了解该接口中的方法的和每个方法的作用是非常有必要的,那么我们现在就来看看每个方法的具体作用。如图我们可以看到ExecutorService的所有方法:接下来对每个方法做具体的了解。其中shutdown(),shutdownNow(),isShutDown(),submit()相关方法前面已经介绍过,...原创 2019-12-02 15:46:25 · 973 阅读 · 0 评论 -
java多线程:CompletionService的使用
1.CompletionService是什么? 答 :CompletionService的功能是以异步的方式,一边产生新任务,一边处理已完成的任务的结果,这样可以将执行任务与处理任务分开来处理。使用submit来执行任务,使用take来取得已完成的任务,并按照完成这些任务的时间顺序处理完成的任务。该接口其实与future的功能相似,但是与future的最大不同在于future必须要等待所有的...原创 2019-11-29 15:27:50 · 551 阅读 · 0 评论 -
java多线程:线程池常用的三种队列详解!
开篇:我们在初始化线程池的时候常常会使用到如下三种队列,他们分别是:LinkedBlockingDeque(链表同步阻塞队列)、ArrayBlockingQueue(数组同步阻塞队列)、SynchronousQueue(同步阻塞队列)他们与线程池的的maximumPoolSize参数结合使用时会有不同的效果。通过实验来说明:1.使用ArrayBlockingQueue(1)....原创 2019-11-12 18:03:35 · 11318 阅读 · 0 评论 -
java多线程:ThreadPoolExecutor几个重要方法的详解
1.shutdown()方法:Initiates an orderly shutdown in which previously submitted tasks are executed, but no new tasks will be accepted.Invocation has no additional effect if already shut down.(启动有序关闭,在该关闭...原创 2019-11-11 15:16:21 · 3098 阅读 · 0 评论 -
java多线程(线程池):ThreadPoolExecutor构造方法详解
1.为什么我们需要了解ThreadPoolExecutor? java的并发包为我们提供了一个Executors(java.util.concurrent)工具类,通过这个工具类我们可以很方便的创建线程池,其中: (1).创建无界线程池 public static ExecutorService newCachedThreadPool() {...原创 2019-11-02 13:58:20 · 351 阅读 · 0 评论 -
java多线程:使用newFixedThreadPool方法创建指定线程数量的线程池
写在前面的话:本文给出了如何创建一个有界线程池的一种方法,并对其中的问题进行了分析理解,其中最后一个分析问题个人觉得非常有价值,通过这个问题能帮我们更好的理解线程池。1.创建无界线程池可能会造成的问题在上一篇博客中我们对线程池有一个简单的了解,并知道了如何创建线程池以及让线程池中的线程执行。但是上一篇博客中所用的newCachedThreadPool()方法创建线程并不好,因为如果使用不当...原创 2019-10-28 16:50:51 · 5342 阅读 · 0 评论 -
java多线程:线程池之创建无界线程池
1.学习了解线程池,首先我们必须要先了解线程池的接口类图:在上边的类图中,最上层就是Executor框架,它是一个根据一组执行策略的调用调度执行和控制异步任务的框架,目的是提供一种将任务提交与任务如何运行分离开的机制。它包含了三个executor接口:Executor:运行新任务的简单接口 ExecutorService:扩展了Executor,添加了用来管理执行器生命周期和任...原创 2019-10-25 16:57:30 · 1986 阅读 · 0 评论 -
java多线程:线程安全与synchronized关键字(应用级别)
写在前面的话:本文是我个人不断学习总结试验快一个星期的结果,如果你认真去研究理解相信你也会有不小的收获!但是内容也比较长需要很大耐心去阅读,不建议一次性读完!1.线程安全问题出现的根本原因是什么? 线程安全问题出现的根本原因是由于,多个线程同时操作一个共享数据,使结果出现二义性【期望结果与获得结果相悖】。2.如何更好理解线程安全? 举个例子:比...原创 2019-10-22 16:26:03 · 229 阅读 · 0 评论 -
java多线程:线程的启动和暂停suspend与resume的使用(过期方法)!
1.suspend:挂起,resume:恢复2.使用suspend()可以将线程挂起,线程处于暂停状态,使用resume()可以将线程恢复运行。但这两个 API 是过期的,也就是不建议使用的。不推荐使用 suspend() 去挂起线程的原因,是因为 suspend() 在导致线程暂停的同时,并不会去释放任何锁资源。其他线程都无法访问被它占用的锁。直到对应的线程执行 resume() 方法后...原创 2019-10-15 16:38:21 · 965 阅读 · 0 评论 -
java线程类:yield()方法详解!
1.yield()定义:yield()方法的作用是放弃当前的cpu的资源,将他让给其他的任务去占用cpu执行时间。 但是放弃的时间不确定,有可能刚刚放弃又马上获得cpu时间片。《java多线程编程核心技术》2.如何更好理解yield()? yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线...原创 2019-10-09 16:26:51 · 3398 阅读 · 0 评论 -
Java多线程之interrupt()的深度研究
本来想自己去写一写 ,但是在网上找到一篇比较完整的文章,自己写也写的没那好,所以就直接转载好了!文章来源:https://www.cnblogs.com/carmanloneliness/p/3516405.html本文将上述博客中所引用的一个例子来进一步分析,帮助读者更好的理解interrupt()的具体实现原理:案例:package interrupt;public c...原创 2019-10-08 16:19:16 · 142 阅读 · 0 评论 -
多线程:join方法原理解析!
1.join()解释:自我理解:Waits for this thread to die.(等待该线程{xxx.join()的xxx线程}执行结束后,当前线程再开始执行)换句话说就是谁.join()就等谁执行。网上解释:join()是Thread类的一个方法,根据jdk文档的定义,join()方法的作用,是等待这个线程结束,即当前线程等待另一个调用join()方法的线程执行结束后再往下...原创 2019-09-26 19:05:14 · 1061 阅读 · 0 评论 -
java线程类:ThreadLocal的理解
1.什么是ThreadLocal变量?解答一:ThreadLocal是Java里一种特殊的变量。每个线程都有一个ThreadLocal就是每个线程都拥有了自己独立的一个变量,竞争条件被 彻底消除了。它是为创建代价高昂的对象获取线程安全的好方法,比如你可以用ThreadLocal让SimpleDateFormat变成线程安全的,因 为那个类创建代价高昂且每次调用都需要创建不同的实例所以不值得在局...原创 2019-09-25 17:54:51 · 144 阅读 · 0 评论 -
线程通讯方式:以Semaphore的方式进行线程之间的互相通讯
1.Semaphore(信号量): Semaphore用来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量2.如何理解semaphore? 网上有一段比较形象的解释: 理解Semaphore所表达的含义,只能把它比作是控制流量的红绿灯,比如XX马路要限制流量,只允许同时有一百辆车在这条路上行使,其他的都必须在路口等待,所以前一百辆...原创 2019-09-25 09:39:03 · 212 阅读 · 0 评论 -
线程通信方式:以CycliclBarrier的方式进行线程之间的通信
package com.springboot.thread;import javax.xml.crypto.Data;import java.util.Date;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/** 以CycliclBarri...原创 2019-09-23 15:01:02 · 219 阅读 · 0 评论 -
线程的通信方式:CountDownLatch
package com.springboot.thread;import java.util.concurrent.CountDownLatch;public class ThreadCommunication3 { /*设置需要等待的线程的数量*/ private CountDownLatch countDownLatch = new CountDownLatch...原创 2019-09-23 11:38:31 · 252 阅读 · 0 评论 -
线程通信方式:condition+lock实现线程之间的通信方式
/* * 线程质之间的通信方式二:condition+lock实现线程之间的通信方式 * */public class ThreadCommunication2 { private int i = 0; /*重入锁:参数: true 代表公平锁 ,false:独占锁*/ private Lock lock = new ReentrantLock(false);...原创 2019-09-19 17:42:16 · 478 阅读 · 3 评论