java并发学习
pengdayong77
这个作者很懒,什么都没留下…
展开
-
java并发编程(五)CompletionService
CompletionService可以在多个任务中依时间先后获取最先执行完成的任务结果。废话不说,直接上代码。import java.util.concurrent.Callable;public class BlockCall extends Thread implements Callable<String>{ private int blocktime; publi...原创 2020-03-29 18:28:42 · 102 阅读 · 0 评论 -
java并发编程(四)Future取消测试
在需要获取返回值时,我们常使用线程池的submit方法,传入Future对象。有些时候,程序运行很长,我们需要终结它的运行。Future的cancel方法为我们提供了支持。在学习java并发编程的过程中,发现即使不在处理程序中使用Thread.isInterrupoted方法判断当前线程是否被终断,也可以实现程序的终断。测试过程如下:...原创 2020-03-29 11:13:59 · 136 阅读 · 0 评论 -
Executors创建线程池(三)
Executors创建线程池执行短且多的任务操作。实际使用时,需要考虑1.创建一个线程固定的线程池长期存在,程序中使用时间短的操作可以直接给到线程池中去执行。2.需要考虑程序异常停止后,线程池中未执行的操作如何补救执行。Executors.newFixedThreadPool 创建固定大小的线程池。这个是常用的类型。Executors.newCachedThreadPool 无边界的线程池...原创 2020-03-28 16:46:17 · 189 阅读 · 0 评论 -
Semaphore(二)
应用场景:需要同时对许多数据执行相同操作,缩短处理数据的时间。同时限制并发线程,避免过多线程占用服务器性能。 如果该方法被经常调用,建议使用线程池作为线程提供者,避免新建线程带来的性能消耗。主要执行数据处理的Semaphore方法类将数据传入到线程中的方法类调用执行数据执行结果...原创 2020-03-28 10:39:50 · 115 阅读 · 0 评论 -
Semaphore(一)
Semaphore 主要用于限定每个执行周期只允许一定数目的线程执行操作,从而保证虚拟机不因为无限制地使用线程资源导致系统崩溃。使用线程A进行测试执行结果如下:结论:因为初始化时,指定了permits=2,所以每周期执行时,只会同时有两个线程运行,其它线程等待。...原创 2020-03-26 22:37:58 · 189 阅读 · 0 评论