并发编程
mindcarver
匠心
展开
-
并发编程常见概念
文章目录并发编程常见的概念一:线程和进程二:同步和异步三:并发和并行四:临界区并发编程常见的概念一:线程和进程进程:并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。线程与进程:线程和进程的实现在操作系统之间有所不同,但在大多数情况下,线...原创 2019-03-01 15:10:07 · 210 阅读 · 0 评论 -
JUC之countDownLatch详解
CountDownLatch一:CountDownLatch介绍CountDownLatch 是一个多线程控制工具类,用来控制线程等待,它可以让某个线程等待直到倒计时结束,再执行。二:案例API:public CountDownLatch (int count)模拟一个场景,现在有3个服务,我们必须等待3个服务全部完成之后才能调用主线程public class CountDow...原创 2019-03-04 10:42:56 · 917 阅读 · 0 评论 -
JUC之Semaphore(信号量)详解
信号量一:什么是信号量信号量是对锁的扩展,不管是同步synchronized还是ReentrantLock,一次只能允许一个线程访问一个资源,但是信号量可以使得多个线程,同时访问一个资源.基本方法:public Semaphore(int permits) { sync = new NonfairSync(permits);}public Semaphore(int permi...原创 2019-03-04 10:38:36 · 893 阅读 · 0 评论 -
JUC之读写锁reentrantReadWriteLock详解
读写锁ReadWriteLock一:什么是读写锁读写锁是jdk5提供的读写分离锁,通过分离读和写来减少锁之间的竞争。举个简单例子,线程A、B负责写操作,线程C、D负责读操作。这样一来,可以使得C、D线程真正并行,保证了读可以同时读。但是读和写之间还是要需要相互等待以及持有锁的。它们之间的关系如下:读写读非阻塞阻塞写阻塞阻塞读-读:不阻塞读-写:阻...原创 2019-03-04 10:36:15 · 206 阅读 · 0 评论 -
JUC之详解重入锁
重入锁一 :什么是重入锁这里需要详细介绍一下synchronized,它有一些功能性的限制 :它无法中断一个正在等候获得锁的线程无法通过轮询得到锁如果不想等下去,也就没法得到锁。同步还要求锁的释放只能在与获得锁所在的堆栈帧相同的堆栈帧中进行ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似轮询锁、定时锁等候...原创 2019-03-04 10:32:57 · 318 阅读 · 0 评论 -
阻塞队列之ArrayBlockingQueue
ArrayBlockingQueue一:概述ArrayBlockingQueue类是由数组支持的有界阻塞队列。通过有界,它意味着队列的大小是固定的。创建后,无法更改容量。尝试将元素放入完整队列将导致操作阻塞。同样,也会阻止从空队列中获取元素的尝试。最初可以通过将容量作为ArrayBlockingQueue的构造函数中的参数传递来实现ArrayBlockingQueue的绑定。此队列命令元素FI...原创 2019-03-08 14:15:42 · 420 阅读 · 0 评论 -
并发编程之概述阻塞队列(BlockingQueue)
阻塞队列阻塞队列概述在Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue的核心方法以及各种队列的功能及使用场景。BlockingQueue核心方法// 将指定的元素插入到此队列中(如果立即可行且不会违反容量限制),...原创 2019-03-08 14:07:25 · 142 阅读 · 0 评论 -
并发编程之线程之间的通信
等待wait()和通知notify()、notifyAll()简单分析线程之间用来通信的两个方法:wait()等待和notify()通知.它们是object类里的方法。如下:方法名称描述notify()通知一个在对象上等待的相乘,使其从wait()方法返回,而返回的前提是该线程获取到了对象的锁。notifyAll()通知所有等待在该对象上的线程。wait...原创 2019-03-01 17:58:32 · 162 阅读 · 0 评论 -
并发编程之join()和yield()和sleep()区别
join()和yield()和sleep()一:join()很多时候,A线程的输出十分依赖B线程的输入,这个时候A线程就必须等待B线程执行完之后再根据线程B的执行结果进行输出。而JDK正提供了 join() 方法来实现这个功能。如下两个join方法:public final void join() throws InterruptedException { join(0);}pu...原创 2019-03-01 17:12:30 · 1510 阅读 · 0 评论 -
并发编程之synchronized关键字
文章目录synchronized关键字一:简单介绍二:java同步块三:this锁、class锁和object锁synchronized关键字一:简单介绍之前我们写的大多数程序都是一个线程在操作,那么先来看一下下面这个例子:public class UnsafeThreadCallDemo { private static int i = 0; public static ...原创 2019-03-01 17:09:28 · 171 阅读 · 0 评论 -
并发编程之线程详解
认识线程一.:线程、进程、子例程、协程的区别线程:执行线程是可由调度器独立管理的最小程序指令序列,调度器通常是操作系统的一部分。进程:进程是在计算机中运行的程序的实例。它与任务有意义,与任务一样,进程是一个运行程序,通过该程序关联特定数据集,以便可以跟踪进程。由多个用户共享的应用程序通常在每个用户的某个执行阶段具有一个进程。线程与进程:线程和进程的实现在操作系统之间有所不同,但在大多数情况...原创 2019-03-01 16:05:14 · 205 阅读 · 0 评论 -
史上最全的多线程编程学习目录(附源码)
文章目录1.并发编程的基本概念2. 线程的基本操作3.线程之间的通信wait和notify4.join和yield以及sleep详解5. synchronized关键字讲解6. volatile原理7. 线程组8.线程优先级9.守护线程10.ThreadLocal二:JDK并发包1.jdk并发工具类重入锁信号量读写锁CountDownLatchcyclicBarrierLockSupport2.j...原创 2019-04-26 10:54:59 · 610 阅读 · 0 评论