随笔分类 -  Java并发编程

[多线程] Wait和Notify方法解析
摘要:一 wait/notify如何使用 wait\notify 这两个方法是Object 类中的方法,这两个方法包括他们的重载方法一共有5个,而Object 类中一共才 12 个方法,可见这2个方法的重要性。我们先看看 JDK 中的代码: 其中有3个方法是 native 的,也就是由虚拟机本地的c代码执 阅读全文
posted @ 2019-10-13 20:33 Vagrant。 阅读(1087) 评论(0) 推荐(0)
[锁] 线程死锁解析
摘要:一 前言 在 Java 的并发编程中,有一个问题需要特别注意,那就是死锁,如果发生了死锁,基本就是重启,而重启将会丢失运行中的数据。所以,了解死锁的形成并排查死锁到预防死锁成了一个重要的问题。 我们了解任何一个事情的步骤是:what,how,why,why not。 二 什么是死锁 上面的代码中,我 阅读全文
posted @ 2019-10-13 18:01 Vagrant。 阅读(703) 评论(0) 推荐(0)
[锁] ReenTrantLock总结
摘要:一 ReentrantLocak特性(对比synchronized) (1)尝试获得锁,锁获取超时 (2)获取到锁的线程能够响应中断 ReentrantLock类在java.util.concurrent.locks包中,ReentrantLock实现Lock接口,并且在ReentrantLock中 阅读全文
posted @ 2019-08-05 12:08 Vagrant。
[多线程] Java线程池应用及原理分析(JDK1.8)
摘要:一 线程池优点 1、线程在创建和销毁时是非常耗费资源的,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。 2、可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃。 对操作系统来说,创建一个线程的代价是十分昂贵的, 需要给它分配内存、列入调度,同 阅读全文
posted @ 2019-04-11 12:24 Vagrant。 阅读(1268) 评论(0) 推荐(0)
[多线程] ThreadLocal总结
摘要:一 问题抛出 SimpleDateFormat是非线程安全的,在多线程情况下会遇见问题: public static void main(String[] args) { ExecutorService executorService = Executors.newCachedThreadPool( 阅读全文
posted @ 2019-04-04 10:46 Vagrant。 阅读(240) 评论(0) 推荐(0)
[锁] Synchronized总结
摘要:一 synchronized加锁原理 synchronized可以保证方法或者代码块在运行时,同一时刻只有一个线程可以进入到临界区,同时它还可以保证共享变量的内存可见性。 Java中每一个对象都可以作为锁,这是synchronized实现同步的基础: (1)普通同步方法,锁是当前实例对象 (2)静态 阅读全文
posted @ 2019-04-03 18:44 Vagrant。 阅读(299) 评论(0) 推荐(0)