
Java并发编程
文章平均质量分 84
天才之上
路上的风景一片精彩。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
BlockingQueue及其实现
1. 前言BlockingQueue即阻塞队列,它是基于ReentrantLock,依据它的基本原理,我们可以实现Web中的长连接聊天功能,当然其最常用的还是用于实现生产者与消费者模式,大致如下图所示:在Java中,BlockingQueue是一个接口,它的实现类有ArrayBlockingQueue、DelayQueue、 LinkedBlockingDeque、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue等...原创 2021-02-28 18:02:24 · 686 阅读 · 0 评论 -
线程的生命周期状态图,及相应概念。
一、线程的生命周期线程状态转换图:1、新建状态(New)用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态(runnable)。注意:不能对已经启动的线程再次调用start()方法,否则会出现java.lang.IllegalThreadStateException异常。2...原创 2019-12-24 16:51:06 · 751 阅读 · 0 评论 -
Java线程池ThreadPoolExecutor详解
Java线程池ThreadPoolExecutor详解1、线程池的工作原理?线程池刚创建时,里面没有一个线程。任务队列是作为参数传进来的。不过,就算队列里面有任务,线程池也不会马上执行它们。 当调用 execute() 方法添加一个任务时,线程池会做如下判断: 如果正在运行的线程数量小于 corePoolSize,那么马上创建线程运行这个任务; 如果正在运行的线程数量大于...原创 2019-09-02 19:51:32 · 225 阅读 · 0 评论 -
java并发编程:多线程通信
线程间的通信这里我们有一个需求,如下: 分别开一个线程代表两个工作者,一个负责挖坑,一个负责埋土,要求挖一个埋一个,实现挖坑、埋土、挖坑、埋土.....循环下去 先看一下下边得实现public class Test { String s = ""; public synchronized void dig() { s = "挖坑"; } public sync...原创 2019-06-28 18:15:54 · 221 阅读 · 0 评论 -
java并发编程:并发体系导图
原创 2019-06-28 15:42:43 · 583 阅读 · 1 评论 -
java并发编程:根据线程名获取线程及停止线程
根据线程名获取线程及停止进程 线程的命名与获取名称方法 设置名称可以使用Thread类的如下方法:*构造方法:public Thread (Runnable Target,String name)*设置名字:public final void setName(String name)获取线程名城:*当前运行的线程名称:Thread.current...原创 2018-02-01 14:30:52 · 22018 阅读 · 2 评论 -
java并发编程:正确停止一个线程
停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。在java中有以下3种方法可以终止正在运行的线程:使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 使用stop方法强行终止,但是不推荐这个方法,因...转载 2018-02-01 14:12:00 · 3137 阅读 · 0 评论 -
java并发编程:并发编程简介
Java并发编程的讨论NO1.进程及线程的简介进程:创建进程相当于在整个系统资源中开辟构建出来一个新的实体,系统会为这个进程分配资源,加载代码,构建运行环境和结构。这个实体就是一个程序,这个程序拥有自己的任务、目的和要实现的事件、功能。但是他却不具备执行者,也就是说他就像一个机构架构,如果没有人在里边工作,那么这个机构也就是个空架子。而谁来在这个机构中进行工...原创 2017-11-24 16:35:23 · 288 阅读 · 0 评论 -
java并发编程:synchronized与static synchronized 的区别
1.synchronized与static synchronized 的区别 synchronized是对类的当前实例进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块,注意这里是“类的当前实例”, 类的两个不同实例就没有这种约束了。那么static synchronized恰好就是要控制类的所有实例的访问了,static synchronized是限制线程同时...转载 2018-02-07 11:25:31 · 314 阅读 · 0 评论 -
java并发编程:AQS
目录简介CLH同步队列入列出列同步状态的获取与释放独占式独占式同步状态获取独占式获取响应中断独占式超时获取独占式同步状态释放共享式共享式同步状态获取共享式同步状态释放阻塞和唤醒线程简介java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁...原创 2019-03-11 16:19:29 · 461 阅读 · 0 评论 -
java并发编程:可重入锁是什么?
释义广义上的可重入锁指的是可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不发生死锁(前提得是同一个对象或者class),这样的锁就叫做可重入锁。ReentrantLock和synchronized都是可重入锁,下面是一个用synchronized实现的例子:public class ReentrantTest implements Runnable { pub...原创 2019-03-11 15:24:50 · 444 阅读 · 0 评论 -
java并发编程:CAS
目录CAS分析CAS缺陷循环时间太长只能保证一个共享变量原子操作ABA问题CAS,Compare And Swap,即比较并交换。Doug lea大神在同步组件中大量使用CAS技术鬼斧神工地实现了Java多线程的并发操作。整个AQS同步组件、Atomic原子类操作等等都是以CAS实现的,甚至ConcurrentHashMap在1.8的版本中也调整为了CAS+Synchron...原创 2019-02-01 17:52:26 · 478 阅读 · 0 评论 -
java并发编程:基于JMM分析DCL
目录问题分析解决方案基于volatile解决方案基于类初始化的解决方案DCL,即Double Check Lock,中卫双重检查锁定。问题分析我们先看单例模式里面的懒汉式: public class Singleton { private static Singleton singleton; private Singleton(){} ...原创 2019-02-01 17:31:06 · 210 阅读 · 0 评论 -
java并发编程:ThreadLocal
概述相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程访问资源时的共享问题。如果你也这样认为的,那现在给你10秒钟,清空之前对ThreadLocal的错误的认知!more看看JDK中的源码是怎么写的:This class provides thr...原创 2018-03-22 16:24:59 · 230 阅读 · 0 评论 -
java并发编程:ExecutorService详解
接口 java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。一个 ExecutorService 实例因此特别像一个线程池。事实上,在 java.util.concurrent 包中的 ExecutorService 的实现就是一个线程池的实现。ExecutorService 样例 这里有一个简单的使用Java 实现的 Exe...原创 2018-09-29 15:37:50 · 978 阅读 · 0 评论 -
java并发编程:原子变量
当几个线程都不能访问某个数据(通常是某个变量)时,你必须同步数据的访问以确保变量的可见性和正确性。举个例子,如果你有如下一个简单的计数器:public class Counter { private int value; public int getValue(){ return value; } public int getNextVal...原创 2018-09-29 15:48:05 · 197 阅读 · 0 评论 -
java并发编程:synchronized
目录 synchronized三种应用方式synchronized作用于实例方法当前锁?:解决的问题:存在的问题:synchronized作用于静态方法synchronized同步代码块synchronized底层语义原理理解Java对象头与MonitorJava对象头monitorJava虚拟机对synchronized的优化偏向锁轻量...原创 2019-01-19 13:47:45 · 271 阅读 · 0 评论 -
java并发编程:JMM内存模型及volatile关键字内存语义
目录 Java内存区域划分(数据区域)方法区(Method Area):JVM堆(Java Heap):程序计数器(Program Counter Register):虚拟机栈(Java Virtual Machine Stacks):本地方法栈(Native Method Stacks)Java内存模型概述硬件内存架构与Java内存模型硬件内存架构Ja...原创 2019-02-01 16:43:13 · 1129 阅读 · 0 评论