随笔分类 -  java并发进阶篇

摘要:什么是线程池 在 Java 中,如果每个请求到达就创建一个新线程,创建和销毁线程花费的时间和消耗的系统 资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。 如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足 为了解决这个问题,就有了线 阅读全文

posted @ 2020-06-07 22:55 FLGB 阅读(804) 评论(0) 推荐(0) |

摘要:我相信大家都有使用过分布式消息队列,比如 ActiveMQ、kafka、RabbitMQ 等等,消息队列的是有可以使得程序之 间实现解耦,提升程序响应的效率。如果我们把多线程环境比作是分布式的话,那么线程与线程之间是不是也可以使用这种消息队列的方式进行数据通 信和解耦呢? 阻塞队列的使用案例 注册成 阅读全文

posted @ 2020-06-07 22:30 FLGB 阅读(664) 评论(0) 推荐(0) |

摘要:Condition 在前面学习 synchronized 的时候,有讲到 wait/notify 的基本使用,结合 synchronized 可以实现对线程的通信。 那么这个时候我就在思考了,既然 J.U.C 里面提供了锁的实现机制,那 J.U.C 里面有没有提供类似的线程通信的工具呢? 于是找阿找 阅读全文

posted @ 2020-06-01 00:42 FLGB 阅读(748) 评论(0) 推荐(0) |

摘要:J.U.C 简介 Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发 场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等。并 发包的作者是大名鼎鼎的 Doug Lea。我们在接下来的课程中,回去剖析一些经典 的比较常用的组件的设计思想 阅读全文

posted @ 2020-05-24 17:53 FLGB 阅读(927) 评论(0) 推荐(0) |

摘要:一、Volatile 一段代码引发的思考,下面这段代码,演示了一个使用 volatile 以及没使用volatile 这个关键字,对于变量更新的影响 public class VolatileDemo { public volatile static boolean stop = false; pu 阅读全文

posted @ 2020-05-23 17:39 FLGB 阅读(533) 评论(0) 推荐(0) |

摘要:由一个问题引发的思考 线程的合理使用能够提升程序的处理性能,主要有两个方面, 第一个是能够利用多核 cpu 以及超线程技术来实现线程的并行执行; 第二个是线程的异步化执行相比于同步执行来说,异步执行能够很好的优化程序的处理性能提升并发吞吐量 同时,也带来了很多麻烦,举个简单的例子多线程对于共享变量访 阅读全文

posted @ 2020-05-07 01:13 FLGB 阅读(523) 评论(0) 推荐(0) |

摘要:线程的应用 如何应用多线程 在 Java 中,有多种方式来实现多线程。继承 Thread 类、实现 Runnable 接口、使用 ExecutorService、Callable、Future 实现带返回结果的多线程。 继承 Thread 类创建线程 Thread 类本质上是实现了 Runnable 阅读全文

posted @ 2019-12-17 22:15 FLGB 阅读(353) 评论(0) 推荐(0) |

摘要:package com.shangguigu; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReadWr 阅读全文

posted @ 2019-11-03 21:17 FLGB 阅读(147) 评论(0) 推荐(0) |

摘要:public class SemaphoreDemo { public static void main(String[] args) { Semaphore semaphore = new Semaphore(3);//信号量3个 for (int i = 0; i < 6; i++) { new 阅读全文

posted @ 2019-11-03 21:02 FLGB 阅读(193) 评论(0) 推荐(0) |

摘要:public static void main(String[] args) { CyclicBarrier cyclicBarrier = new CyclicBarrier(7,()->{System.out.println("游客集结完毕,出发");}); for (int i = 0; i 阅读全文

posted @ 2019-11-03 20:54 FLGB 阅读(137) 评论(0) 推荐(0) |

摘要:public class CountDownLatchDemo { public static void main(String[] args) throws Exception { CountDownLatch countDownLatch = new CountDownLatch(54); fo 阅读全文

posted @ 2019-11-03 20:35 FLGB 阅读(125) 评论(0) 推荐(0) |

摘要:public class CallableDemo { public static void main(String[] args) throws Exception, ExecutionException { FutureTask<String> futureTask = new FutureTa 阅读全文

posted @ 2019-11-03 20:18 FLGB 阅读(214) 评论(0) 推荐(0) |

摘要:结果:发现不是打印出三个参数值,出现异常 修改成集合安全 hashSet和HashMap也一样 阅读全文

posted @ 2019-10-30 22:39 FLGB 阅读(348) 评论(0) 推荐(0) |

摘要:运行结果:(电脑性能好,参数放大十倍参能看出效果) 阅读全文

posted @ 2019-10-30 21:33 FLGB 阅读(277) 评论(0) 推荐(0) |

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3