![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
火龙果儿
不负年少轻狂时光
展开
-
Java并发编程:马士兵并发笔记(三)并发容器
线程安全的单例模式:1.多线程安全单例模式实例一(不使用同步锁)public class Singleton { private static Singleton sin=new Singleton(); ///直接初始化一个实例对象 private Singleton(){ ///private类型的构造函数,保证其他类对象不能直接new一个该对象的实例 ...原创 2019-11-23 20:44:41 · 197 阅读 · 0 评论 -
Java并发编程:马士兵并发笔记(二)可重入锁
可重入锁ReentrantLockReentrantLock的使用ReentrantLock可以完全替代synchronized,提供了一种更灵活的锁.ReenTrantLock必须手动释放锁,为防止发生异常,必须将同步代码用try包裹起来,在finally代码块中释放锁.public class T { ReentrantLock lock = new ReentrantLoc...原创 2019-11-23 19:04:27 · 487 阅读 · 0 评论 -
Java并发编程:马士兵并发笔记(一)线程同步基础
线程的创建继承Thread类,并覆盖run()方法Thread的实现类继承Thread类,并覆盖其run()方法,run()方法中定义线程需要执行的任务,并调用实现类的start()方法创建线程.调用实现类的run()方法只是单纯的方法调用,并不能新建线程.class MyThread extends Thread { @Override public void run...原创 2019-11-23 16:50:29 · 445 阅读 · 0 评论 -
Java多线程基础(五) 并发三大问题和volatile关键字,CAS操作
Java并发三大问题和volatile关键字,CAS操作序言01 final class SetCheck {02 private int a = 0;03 private long b = 0;04 05 void set() {06 a = 1;07 b = -1;08 }09 10 boolean check() {11...转载 2019-10-28 00:03:41 · 164 阅读 · 0 评论 -
Java中的Unsafe
Java和C++语言的一个重要区别就是Java中我们无法直接操作一块内存区域,不能像C++中那样可以自己申请内存和释放内存。Java中的Unsafe类为我们提供了类似C++手动管理内存的能力。Unsafe类,全限定名是sun.misc.Unsafe,从名字中我们可以看出来这个类对普通程序员来说是“危险”的,一般应用开发者不会用到这个类。Unsafe类是"final"的,不允许继承。且构造函数是...转载 2019-10-24 20:33:23 · 149 阅读 · 0 评论 -
Java多线程基础(四) 一行一行源码分析清楚AbstractQueuedSynchronizer
在分析 Java 并发包 java.util.concurrent 源码的时候,少不了需要了解 AbstractQueuedSynchronizer(以下简写AQS)这个抽象类,因为它是 Java 并发包的基础工具类,是实现 ReentrantLock、CountDownLatch、Semaphore、FutureTask 等类的基础。Google 一下 AbstractQueuedSynchr...转载 2019-10-23 21:47:15 · 146 阅读 · 0 评论 -
Java多线程基础(三) 深入理解Java内存模型JMM
一:JMM基础与happens-before并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模...转载 2019-10-23 21:16:12 · 189 阅读 · 0 评论 -
Java多线程基础(二) 线程具体操作与ThreadLocal
线程具体操作与ThreadLocal1 线程中断1.1 什么是线程中断?线程中断是线程的标志位属性。而不是真正终止线程,和线程的状态无关。线程中断过程表示一个运行中的线程,通过其他线程调用了该线程的 interrupt() 方法,使得该线程中断标志位属性改变。深入思考下,线程中断不是去中断了线程,恰恰是用来通知该线程应该被中断了。具体是一个标志位属性,到底该线程生命周期是去终止,还是继续运...转载 2019-10-23 20:14:50 · 154 阅读 · 0 评论 -
Java多线程基础(一) 线程启动及线程状态
1 线程与多线程线程是什么?线程(Thread)是一个对象(Object)。用来干什么?Java 线程(也称 JVM 线程)是 Java 进程内允许多个同时进行的任务。该进程内并发的任务成为线程(Thread),一个进程里至少一个线程。Java 程序采用多线程方式来支持大量的并发请求处理,程序如果在多线程方式执行下,其复杂度远高于单线程串行执行。那么多线程:指的是这个程序(一个进程)运行时产...转载 2019-10-23 19:13:27 · 159 阅读 · 0 评论 -
Java并发知识学习:线程池
部分内容来自https://javadoop.com/2017/09/05/java-thread-pool/hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io线程池一、线程池简介 线程池可以看做是线程的集合。当请求到来,线程池给这个请求分配一个空闲的线程,任务完成后回到线程池中等待下次任务(而不...转载 2019-10-23 18:26:04 · 140 阅读 · 0 评论