Java多线程
文章平均质量分 80
知行流浪
不务正业的IT男
展开
-
java.lang.ThreadLocal
JDK解析 public class ThreadLocal<T> extends Object 该类提供了线程局部(thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal实例通常是类中的private static ...原创 2018-04-08 09:00:30 · 1197 阅读 · 0 评论 -
Java多线程编程---Java5同步工具
Semaphore同步工具 Semaphore可以维护当前访问自身的线程个数,并且提供了同步机制。 semaphore实现的功能类似于厕所里有5个坑,有10个人要上厕所,同时就只能有5个人占用,当5个人中的任何一个让开后,其中在等待的另外5个人中又有一个可以占用了。java.util.concurrent.Semaphore 一个计数信号量。从概念上讲,信...原创 2018-04-16 22:48:28 · 516 阅读 · 0 评论 -
Java多线程编程---线程基础
线程与进程进程 要解释线程,就必须明白什么是进程,就好象要搞清中国历史,就必须要了解春秋战国。什么是进程呢?进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间),比如用户点击桌面的IE浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间。当用户再次点击桌面的IE浏览器,又启动了一个进程,操作系统将为新的进程分配新的独立的地址空间。目前操作系统都支持多进程。 ...原创 2018-04-07 10:19:27 · 299 阅读 · 0 评论 -
Java多线程编程---传统线程同步与通信技术(synchronized)
Java线程的同步 多线程的并发,给我们编程带来很多好处,完成更多更有效率的程序。但是也给我们带来线程安全问题。 解决问题的关键就是要保证容易出问题的代码的原子性,所谓原子性就是指:当a线程在执行某段代码的时候,别的线程必须等到a线程执行完后,它才能执行这段代码。也就是排队一个一个解决。 java处理线程同步的方法非常简单,只需要在需要同步的代码段,用:s...原创 2018-04-07 12:24:47 · 639 阅读 · 1 评论 -
java.util.concurrent.ConcurrentHashMap
定义 public class ConcurrentHashMap extendsAbstractMap implements ConcurrentMap, Serializable 支持获取的完全并发和更新的所期望可调整并发的哈希表。此类遵守与 Hashtable相同的功能规范,并且包括对应于Hashtable的每个方法的方原创 2017-08-11 16:16:14 · 4767 阅读 · 0 评论 -
Java多线程编程---线程同步与通信技术(Lock & Condition)
Java5的条件阻塞条件 条件的功能类似在传统线程技术中的的Object.wait()和Object.natify()的功能,传统线程技术实现的互斥只能一个线程单独执行,不能说这个线程执行完了通知另一个线程来执行,条件就是解决这个问题的,实现线程间的通信。比如CPU让线程1做事,线程1说我先歇着并通知线程2,线程2就开始做事。 公共接口条件 条件将对象监视...原创 2018-04-10 16:20:08 · 528 阅读 · 0 评论 -
Java多线程编程---内存可见性
什么是JAVA 内存模型 Java Memory Model (JAVA 内存模型)描述线程之间如何通过内存(memory)来进行交互。具体说来,JVM中存在一个主存区(Main Memory或Java HeapMemory),对于所有线程进行共享,而每个线程又有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作并非发生在主存...原创 2018-04-15 17:21:26 · 1930 阅读 · 0 评论 -
Java多线程编程---线程锁与读写锁
java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类的相关包。接口摘要 1、Condition:Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set(wait-set)。 ...原创 2018-04-09 23:28:07 · 1817 阅读 · 0 评论 -
java.util.Timer
Java.Util.TimerTimer 一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。 与每个Timer对象相对应的是单个后台线程,用于顺序地执行所有计时器任务。计时器任务应该迅速完成。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务执行线程。因此,这就可能延迟后续任务的执行,而这些任务就可能“堆在一原创 2017-05-09 20:49:57 · 905 阅读 · 0 评论 -
Java多线程编程---并发框架Executor
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,而当针对高质量Java多线程并发程序设计时,为防止死锁等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的危害等诸多因素,往往会采用一些较为复杂的安全策略,加重了程序员的开发...原创 2018-04-08 21:51:25 · 2789 阅读 · 0 评论 -
Java多线程编程---线程内数据共享
线程范围内共享数据 线程范围内共享变量要实现的效果为:多个对象间共享同一线程内的变量。未实现线程共享变量的demo:public class ThreadScopeDataShare { private static int data = 0; public static void main(String[] args) { // 共启动2个线程 for (int i ...原创 2018-04-08 09:19:07 · 4801 阅读 · 2 评论 -
Java多线程编程---java5阻塞队列
java5阻塞队列的应用 队列包含固定长度的队列和不固定长度的队列,先进先出。 固定长度的队列往里放数据,如果放满了还要放,阻塞式队列就会等待,直到有数据取出,空出位置后才继续放;非阻塞式队列不能等待就只能报错了。 讲Condition时提到了阻塞队列的原理,Java中已经实现了阻塞队列ArrayBlockingQueue、BlockingQueue<...原创 2018-04-20 22:38:15 · 1157 阅读 · 0 评论