随笔分类 - 多线程
摘要:1.ThreadLocal的使用 ThreadLocal,即线程变量,是一个以ThreadLocal对象为键,任意对象为值的存储结构。这个结构被附带在线程上,也就是说一个线程可以根据ThreadLocal对象查询到绑定到这个线程上的值。它的作用就是为每一个线程都创建一个变量副本,并且线程可以修改自己
阅读全文
摘要:1.定义 重入锁:能够支持一个线程对资源的重复加锁,也就是当一个线程获取到锁后,再次获取该锁时而不会被阻塞。 2.可重入锁的应用场景 2.1 如果已经加锁,则不再重复加锁,比如:交互界面点击后响应时间长,可能会多次点击,使用重入锁可防止后台重复执行。 2.2 如果发现该操作已经在执行,则等待一段时间
阅读全文
摘要:java中的线程池是应用场景最多的并发框架,合理使用线程池能带来三个好处: 第一:降低资源消耗。通过重复利用已经创建的线程降低创建线程和销毁线程造成的资源消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,会
阅读全文
摘要:1.Callable和Runnable 看Callable接口: 看Runnable接口: Callable和Runnable都代表着任务,不同之处在于Callable有返回值,并且能抛出异常,Runnable任务执行结束之后没有返回值。Callable一般和Future一起使用,可以获取任务返回结
阅读全文
摘要:1.ConcurrentHashMap原理介绍(JDK1.7) 我们知道HashTable在并发情况下效率低的原因是所有访问HashTable的线程都必须竞争同一把锁,这就导致一旦一个线程获取了锁,其余所有的线程都必须处于等待状态。而ConcurrentHashMap使用的是锁分段技术,就是将数据分
阅读全文
摘要:对于本篇文章,将从四个概念来介绍:内存模型基础,重排序,顺序一致性和happens-before 1.内存模型基础 在并发编程中,有两个关键问题:线程之间如何通信和如何同步。由此而引出了两种并发模型:共享内存的并发模型和消息传递的并发模型。 1.1 消息传递的并发模型 该模型是指两个线程之间通过发送
阅读全文
摘要:关于synchronized,本文从使用方法,底层原理和锁的升级优化这几个方面来介绍。 1.synchronized的使用: synchronized可以保证在同一时刻,只有一个线程可以操作共享变量,并且该共享变量的变化对其他线程可见。它的使用方法有三种: 1.1 作用于实例方法 当synchron
阅读全文