随笔分类 -  线程

Future
摘要:/** * Future 未来的执行结果 */ public class T06_Future { public static void main(String[] args) throws ExecutionException, InterruptedException { // 未来任务, 既是Runnable 也是 Future FutureTask<Integer> task = new 阅读全文

posted @ 2019-10-22 15:44 我爱si搬砖 阅读(146) 评论(0) 推荐(0) 编辑

ParallelStreamAPI
摘要:/** * ParallelStreamAPI * */ public class T14_ParallelStreamAPI { public static void main(String[] args) { List nums = new ArrayList(); Random random = new Random(); ... 阅读全文

posted @ 2019-10-22 15:16 我爱si搬砖 阅读(142) 评论(0) 推荐(0) 编辑

ForkJoinPools
摘要:/** * T12_ForkJoinPool 分而治之 * Fork: 分叉 * Join: 合并 * * 将一个任务拆分多个任务执行(可以无限切分),然后将结果合并 * * 比如大量的并行计算, 如下: 求100_0000个数字之和, 使用多线程 */ public class T12_ForkJoinPool { static int[] nums = n... 阅读全文

posted @ 2019-10-22 14:53 我爱si搬砖 阅读(168) 评论(0) 推荐(0) 编辑

ScheduledThreadPool
摘要:/** * ScheduledPool * Scheduled: 计划中的,定时的 * 执行定时的任务,类似Delay, 可以替代Timer */ public class T10_ScheduledPool { public static void main(String[] args) { ScheduledExecutorService service... 阅读全文

posted @ 2019-10-22 14:49 我爱si搬砖 阅读(581) 评论(0) 推荐(0) 编辑

SingleThread
摘要:/** * SingleThreadPool * 线程池中只有一个线程 * 作用,保证线程执行的时序性 */ public class T09_SingleThreadPool { public static void main(String[] args) { ExecutorService service = Executors.newSingleThr... 阅读全文

posted @ 2019-10-22 14:46 我爱si搬砖 阅读(325) 评论(0) 推荐(0) 编辑

CachedThreadPool
摘要:/** * CachedThreadPool * 可缓存的线程 * 当有个请求进入线程池内, 线程池将会启用一个线程 * 当再次有个请求进入线程池内, 并且上个线程未结束, 仍然会启用一个线程 * 当有线程执行完毕后,这个线程不会被清除, 而是被缓存,当有请求进入时, 直接使用缓存线程调用 * 跟 fixedThreadPool 类似, 只不过没有上限(最多Integer最大值... 阅读全文

posted @ 2019-10-22 14:44 我爱si搬砖 阅读(560) 评论(0) 推荐(0) 编辑

ForkJoinPool
摘要:/** * T12_ForkJoinPool 分而治之 * Fork: 分叉 * Join: 合并 * * 将一个任务拆分多个任务执行(可以无限切分),然后将结果合并 * * 比如大量的并行计算, 如下: 求100_0000个数字之和, 使用多线程 */ public class T12_ForkJoinPool { static int[] nums = new int[100_0000]; s 阅读全文

posted @ 2019-10-22 14:40 我爱si搬砖 阅读(388) 评论(0) 推荐(0) 编辑

WorkStealingPool
摘要:/** * WorkStealingPool * 工作窃取线程池 * * 假设共有三个线程同时执行, A, B, C * 当A,B线程池尚未处理任务结束,而C已经处理完毕,则C线程会从A或者B中窃取任务执行,这就叫工作窃取 * 假如A线程中的队列里面分配了5个任务,而B线程的队列中分配了1个任务,当B线程执行完任务后,它会主动的去A线程中窃取其他的任务进行执行 * WorkStealingPool 阅读全文

posted @ 2019-10-22 14:39 我爱si搬砖 阅读(3346) 评论(1) 推荐(0) 编辑

合并计算
摘要:/** * 线程池的作用:并行计算 * 计算 1-200000 之间的质数 */ public class T07_ParallelComputing { public static void main(String[] args) throws ExecutionException, InterruptedException { long start =... 阅读全文

posted @ 2019-10-18 20:14 我爱si搬砖 阅读(204) 评论(0) 推荐(0) 编辑

Future
摘要:/** * Future 未来的执行结果 */ public class T06_Future { public static void main(String[] args) throws ExecutionException, InterruptedException { // 未来任务, 既是Runnable 也是 Future Fut... 阅读全文

posted @ 2019-10-18 19:40 我爱si搬砖 阅读(207) 评论(0) 推荐(0) 编辑

FixedThreadPool Executors
摘要:线程池的作用:并行计算 阅读全文

posted @ 2019-10-18 19:27 我爱si搬砖 阅读(314) 评论(0) 推荐(0) 编辑

LinkedBlockingQueue、ArrayBlockingQueue、DelayQueue、TransferQueue、SynchronousQueue
摘要:1.LinkedBlockingQueue 2.ArrayBlockingQueue 3.DelayQueue可以当做定时任务 4.TransferQueue 5.SynchronousQueue 这个是容量为0的队列,生产者直接把数据交给消费者 总结 阅读全文

posted @ 2019-10-18 17:56 我爱si搬砖 阅读(420) 评论(0) 推荐(0) 编辑

ConcurrentHashMap和Hashtable
摘要:ConcurrentHashMap的效率要比HashTable的效率高, 因为他两个加锁的粒度不同, HashTable是锁的整个对象 ConcurrentHashMap锁的是其中的一部分,大锁换成小锁 阅读全文

posted @ 2019-10-18 17:06 我爱si搬砖 阅读(166) 评论(0) 推荐(0) 编辑

ConcurrentLinkedQueue并发容器
摘要:这是一个买票的问题 解决方案: 3.优化 阅读全文

posted @ 2019-10-18 16:34 我爱si搬砖 阅读(197) 评论(0) 推荐(0) 编辑

ThreadLocal
摘要:线程局部变量 阅读全文

posted @ 2019-10-18 14:43 我爱si搬砖 阅读(121) 评论(0) 推荐(0) 编辑

线程中的wait
摘要:1.若是有判断情况下使用wait()方法,是线程中断,则使用while(){}的方法进行判断。 因为判断满足了If的条件,使这个线程中断,进行等待,下次再执行时,它会接着这个if判断继续执行下去,这样可能会出问题。 而while(){}方法会继续执行while进行判断,再做其他的事情。 阅读全文

posted @ 2019-10-18 13:19 我爱si搬砖 阅读(283) 评论(0) 推荐(0) 编辑

生产者消费者
摘要:注:处于wait状态下的线程没有被唤醒,不能去抢锁 1.容器 2.生产者 3.消费者 4.测试 阅读全文

posted @ 2019-10-18 13:10 我爱si搬砖 阅读(112) 评论(0) 推荐(0) 编辑

多线程
摘要:1.同步方法和非同步方法是否可以同时调用 可以同时调用,可以理解为不加synchronized的方法无视这个对象的锁 2.对业务写方法上枷锁,业务读方法上不加锁,可能会产生脏读现象(读到在写的过程中还没有完成的数据) 3.一个同步方法可以调用另外一个同步方法, 一个线程已经拥有了某个对象的锁,再次申 阅读全文

posted @ 2019-10-17 11:55 我爱si搬砖 阅读(169) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示