Java并发编程
文章平均质量分 90
介绍java线程的使用、线程池、线程同步和通信的总结,另外,还包括使用过程中的一些思考。持续更新中……
yysx
努力就有收获自信才有未来
展开
-
浅析Fork/Join
文章目录一、算法1、二分法2、分治法二、实践举个例子实现原理1)类关系2)主要方法compute()fork()join()三、总结一、算法1、二分法假设我们遇到一个规模很大的问题,很难一下子解决。那么要怎么处理呢?思路一:能不能把这个大规模的问题变为每次减少一点呢?比如从n到n-1。思路二:既然可以每次减少一点,那能不能每次减少几倍?效果会不会更好?这里我们介绍思路二中的一个比较有名的算法——二分查找(也叫折半查找)。具体实现思路:在规模较大的问题n中,查找目标值a,每次折半,然后看原创 2022-03-05 14:23:15 · 634 阅读 · 0 评论 -
java线程(5)——线程池(上)
线程池是一种多线程的处理形式,处理过程中将任务添加到队列,然后创建线程后自动启动这些任务。线程池的种类有很多,我们可以根据具体业务需要决定是否使用、使用哪种线程池。原创 2016-04-15 16:17:12 · 893 阅读 · 3 评论 -
java线程(6)——线程池(下)
上篇博客java线程(5)——线程池(上)介绍了线程池的基本知识,这篇博客我们介绍一下常用的ThreadPoolExecutor。定义类图关系:ThreadPoolExecutor继承了AbstractExecutorService抽象类,而AbstractExecutorService实现了ExecutorService接口。下面来看下ThreadPoolExecut原创 2016-04-17 15:00:35 · 728 阅读 · 4 评论 -
java线程(3)——详解Callable、Future和FutureTask
接上篇博客java线程——三种创建线程的方式 ,这篇博客主要介绍第三种方式Callable和Future。比较继承Thread类和实现Runnable接口,接口更加灵活,使用更广泛。但这两种方式都没有返回值,要想返回相应的数据,就要使用Callable和Future方式。基础:1、Callable还是从定义开始,Callable接口有返原创 2016-04-09 20:55:27 · 2386 阅读 · 5 评论 -
java线程(4)——线程同步的锁技术
同步 同步,字面来看,有点一起工作的意思。但在线程同步中,“同”意为协同、互相配合。比如:A、B两个线程,并不是说两个线程必须同时一起工作,而是说互相配合工作,在某个时间可能线程A要等线程B去工作,之后线程A才能继续工作。如果理解不了,可以参考java线程(2)——模拟生产者与消费者中的例子。 思考: 为什么会有线程同步?上面例子中线程A为什么要等B工作之后才能继续工作?在生产者和消费者的原创 2016-04-12 20:53:26 · 635 阅读 · 3 评论 -
java线程(2)——模拟生产者与消费者
前言: 我们都听说过生产者和消费者的例子吧,现在来模拟一下。生产者生产面包,消费者消费面包。假定生产者将生成出来的面包放入篮子中,消费者从篮子中取。这样,当篮子中没有面包时,消费者不能取。当篮子满了以后,消费者不能一直生产。原创 2016-04-08 10:12:27 · 1465 阅读 · 5 评论 -
java线程(1)——三种创建线程的方式
1、接口实现更灵活,java不支持多继承。在这方面,Runnable和Callable更有优势。 2、返回值问题。Runnable和Thread都不能有返回值,但Callable可以,而且支持多种类型的数据。原创 2016-04-04 21:16:24 · 3238 阅读 · 5 评论