摘要:
一、Java内存模型内存交互操作 1、lock(锁定):作用于主内存的变量,把一个变量标记为一条线程独占状态 2、unlock(解锁):作用于主内存的变量,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定 3、read(读取):作用于主内存的变量,把一个变量值从主内存传输到线程的工 阅读全文
摘要:
线程池 “线程池”,顾名思义就是一个线程缓存,线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此Java中提供线程池对线程进行统一分配、调优和监控 线程池介绍 在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个 阅读全文
摘要:
队列实质就是一种存储数据的结构 通常用链表或者数组实现 一般而言队列具备FIFO先进先出的特性,当然也有双端队列(Deque)优先级队列 主要操作:入队(EnQueue)与出队(Dequeue) BlockingQueue 队列实质就是一种存储数据的结构 通常用链表或者数组实现 一般而言队列具备FI 阅读全文
摘要:
Semaphore Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目。应用场景:资源访问,服务限流。 Semaphore 实现AbstractQueuedSynchronizer的方法与ReentrantLock一样 Semaphore构造方法 public Sema 阅读全文
摘要:
同步框架AbstractQueuedSynchronizer Java并发编程核心在于java.concurrent.util包 而juc当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这个行为的抽象就是基于AbstractQueuedSynchron 阅读全文
摘要:
一、锁的粗化 看如下代码 public class Test { StringBuffer stb = new StringBuffer(); public void test1(){ //jvm的优化,锁的粗化 stb.append("1"); stb.append("2"); stb.appen 阅读全文
摘要:
一、设计同步器的意义 多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。 共享:资源可以由多个线程同时访问 可变:资源可以在其生命周期内被修改 引出的问题:由于线程执行的过程是不可控的,所以需要采用同步机制来协同对 阅读全文