JAVA并发
romantic_jie
学无止境,静无止学!!!
展开
-
根据JDK深入详细学习理解JAVA线程池
笔者,之所以写这篇博客,是因为,很多博客或者书籍,在介绍线程池相关内容的时候,太理论化,直接上结论,并不能正确的表述出来所说的每一个结论,是为什么,怎么理解。所以在此记录一下自己的学习过程,大家共勉! 提前说明,本文文章内容有些深入,繁杂,显得自然就有些混乱,所以,请静下心来,慢慢理解! 首先,进行这样一个思考? 线程池,是什么?作用是什么?(为什么我们需要使用线程池?) 这个问题,相信很...原创 2019-09-01 15:38:37 · 307 阅读 · 0 评论 -
队列同步器AQS的相关学习理解
本文章主要说明队列同步器AbstractQueuSynchronized的使用,以及对其主要方法的简单分析。 队列同步器(以下简称AQS) 队列同步器,是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量来表示同步状态,通过内置的FIFO队列来完成状态抢占线程的排队工作。 同步状态的表示和操作 很明显,表示同步状态的这个量为int类型,且该变量是volatile修饰的,保...原创 2019-09-01 21:43:25 · 208 阅读 · 0 评论 -
根据JDK源码理解学习ThreadLocal
个人查看了很多书籍以及博科介绍,发现对于该类的介绍都比较笼统抽象。所以在此整理个人的学习理解! 问题引入: 为什么要用ThreadLocal,什么是ThreadLocal? 我们考虑这样一个问题:现在有两个线程,这两个线程都要访问一个变量,那么为了解决多线程并发下的同步问题,就要对这个变量进行同步处理。但是,我们要求访问的这个变量,不要求同步,也就是说,多线程访问一个变量的时候,怎么做到每一...原创 2019-08-30 22:28:21 · 184 阅读 · 0 评论 -
JUC中几个常见的并发工具类详解
在JDK的并发包里提供了几个非常有用的并发工具类。 其中CountDownLatch,CyclicBarrier和Semaphore工具类提供了一种并发控制的手段。 而Exchanger工具类则提供了在线程间进行交换数据的一种手段。 1.等待多线程完成的CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作。 定义抽象难理解,直接上测试代码! ...原创 2019-08-30 13:39:02 · 2008 阅读 · 0 评论 -
Java实现生产者消费者模式--解耦(缓冲区)
在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度。 问题的产生: 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产...原创 2019-08-30 15:00:12 · 1048 阅读 · 0 评论 -
理解java线程交互的中断操作--interrupt
通常我们会有这样的需求,即停止一个线程。在java的api中有stop、suspend等方法可以达到目的,但由于这些方法在使用上存在不安全性,会带来不好的副作用,不建议被使用。 在本文中,将讨论中断在java中的理解和使用。 借助《java并发编程的艺术》艺术中的定义:中断可以理解为线程的一个标识位属性,他表示一个运行中的线程是否被其他线程进行了中断操作。中断好比其他线程对该线程打了个招呼,其...原创 2019-08-08 21:45:50 · 260 阅读 · 0 评论 -
java线程不建议使用过期的suspend,resume,stop方法的原因
首先,suspend,resume,stop对应线程的暂停,恢复,和停止操作! 不建议使用的原因主要有: 以suspend为例,在调用后,线程不会释放已经占有的资源(比如锁),而是占有着资源进入睡眠状态,这样就容易引起死锁等不安全问题。 同样的,stop方法在终结一个线程的时候不会保证线程的资源正常释放,通常是没有给予线程完成资源释放工作的机会,因此会导致程序可能工作在不确定状态下! 正因...原创 2019-08-08 21:53:06 · 643 阅读 · 0 评论 -
谈谈进程和线程的联系和区别
(1)进程 进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。 (2)线程 线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。 (3)联系 线程是进程的一部分,一个线程只能属于一个进程,而一个进程可...原创 2019-08-07 17:21:47 · 135 阅读 · 0 评论 -
基于java并发的线程池的简单模拟
//日期:19.5.14 //作者:************* //功能:基于java并发的线程池 package com.*********; import java.awt.JobAttributes; import java.util.*; import java.util.concurrent.locks.Lock; public class ThreadPorlTest { ...原创 2019-05-14 20:51:48 · 317 阅读 · 0 评论 -
JAVA可重入锁ReentrantLock及其公平性
重入锁ReentrantLock 顾名思义,就是支持重复进入的锁,它表示该所能够支持一个线程对资源的重复加锁。而除此之外,该所还支持了获取锁时的公平和非公平性的选择。注意,ReentrantLock是一个独占锁。 重入性分析及实现 分析 这里对比一下synchronized:要知道,synchronized也是支持可重入的,只不过是隐式的,例如,一个synchronized关键字修饰的递归...原创 2019-09-02 12:19:03 · 313 阅读 · 0 评论 -
Synchronized原理以及锁升级
我相信,任何关于Java语言的初学者,认知者,熟练者,大牛者,都知道java语言关于其多线程并发同步的关键字,我们今天的主角synchronized。我们也习惯于把synchronized理解为重量级锁(哪怕你自己当时可能都不知道什么是重量级锁,哈哈)。但是,转折点出现了,JAVA SE 1.6对synchronized进行了各种优化,本文章也是基于此,来理解一下关于synchronized的锁优...原创 2019-09-18 23:14:24 · 545 阅读 · 0 评论