E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
并发编程系列
Java并发编程基础-线程简介
从本篇文章开始,我将开始
并发编程系列
文章,线程是并发编程的基础,理解线程的基本概念和线程状态的转换是并发编程最基本的要求。
秋小安
·
2020-02-09 00:46
Java
并发编程系列
---线程池的创建和使用
一、线程池的使用1.1线程池的创建我们可以通过ThreadPoolExecutor来创建一个线程池。newThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,longkeepAliveTime,TimeUnitunit,BlockingQueueworkQueue,RejectedExecutionHandlerhandler)创建一个线程池
忘不掉就记着吧
·
2020-02-06 19:12
多线程与高并发
线程池
Thread
ThreadPool
java
队列
Java
并发编程系列
---线程池的实现原理
一、线程池简介1.1什么是线程池所谓线程池,通俗的理解就是有一个池子,里面存放着已经创建好的线程,当有任务提交给线程池执行时,池子中的某个线程会主动执行该任务。如果池子中的线程数量不够应付数量众多的任务时,则需要自动扩充新的线程到池子中,但是该数量是有限的,就好比池塘的水界线一样。当任务比较少的时候,池子中的线程能够自动回收,释放资源。为了能够异步地提交任务和缓存未被处理的任务,需要有一个任务队列
忘不掉就记着吧
·
2020-02-06 17:06
多线程与高并发
Thread
ThreadPool
JVM性能优化系列-(2) 垃圾收集器与内存分配策略
Java并发编程:Java
并发编程系列
-(1)并发编程基础Java
并发编程系列
-(2)线程的并发工具类Java
并发编程系列
-(3)原子操作与CASJava
并发编程系列
-(4)显式锁与AQSJava
并发编程系列
后端精进之路
·
2020-01-17 22:00
ABA问题怎么解:AtomicStampedReference和AtomicMarkableReference
并发编程系列
博客传送门并发编程的基石——CAS机制这篇文章中介绍到CAS机制有一个缺点就是ABA问题:CAS在操作的时候会检查变量的值是否被更改过,如果没有则更新值,但是带来一个问题是:如果值最开始的值是
写代码的木公
·
2020-01-14 11:00
原子类型累加器
并发编程系列
博客传送门原子类型累加器是JDK1.8引进的并发新技术,它可以看做AtomicLong和AtomicDouble的部分加强类型。
写代码的木公
·
2020-01-14 11:00
原子类型字段更新器AtomicXxxxFieldUpdater
并发编程系列
博客传送门原子类型字段更新器在java.util.concurrent.atomic中,原子类型字段更新器有以下三种:AtomicIntegerFieldUpdater:基于反射的工具类,可以原子性的更新指定对象的指定
写代码的木公
·
2020-01-08 17:00
AtomicXXX系列类使用分析
并发编程系列
博客传送门在java.util.concurrent.atomic中,普通的原子类型有以下四种:AtomicBoolean:提供对基本数据类型boolean的原子性更新操作。
写代码的木公
·
2020-01-08 09:00
Atomic系列类整体介绍
并发编程系列
博客传送门本文是转载文章,原文请见此博客,文章主要对java.util.concurrent.atomic开发包下的类进行整体概述与类别划分。
写代码的木公
·
2020-01-07 10:00
Atomic系列类整体介绍
并发编程系列
博客传送门本文是转载文章,原文请见此博客,文章主要对java.util.concurrent.atomic开发包下的类进行整体概述与类别划分。
写代码的木公
·
2020-01-07 10:00
并发编程的基石——CAS机制
并发编程系列
博客传送门Java中提供了很多原子操作类来保证共享变量操作的原子性。这些原子操作的底层原理都是使用了CAS机制。
写代码的木公
·
2020-01-07 10:00
并发编程的基石——CAS机制
并发编程系列
博客传送门Java中提供了很多原子操作类来保证共享变量操作的原子性。这些原子操作的底层原理都是使用了CAS机制。
写代码的木公
·
2020-01-07 10:00
JVM性能优化系列-(1) Java内存区域
Java并发编程:Java
并发编程系列
-(1)并发编程基础Java
并发编程系列
-(2)线程的并发工具类Java
并发编程系列
-(3)原子操作与CASJava
并发编程系列
-(4)显式锁与AQSJava
并发编程系列
后端精进之路
·
2020-01-05 21:00
Java
并发编程系列
-(9) JDK 8/9/10中的并发
Java并发编程:Java
并发编程系列
-(1)并发编程基础Java
并发编程系列
-(2)线程的并发工具类Java
并发编程系列
-(3)原子操作与CASJava
并发编程系列
-(4)显式锁与AQSJava
并发编程系列
后端精进之路
·
2020-01-02 20:00
Java内存模型之有序性问题
并发编程系列
博客传送门前言之前的文章中讲到,JMM是内存模型规范在Java语言中的体现。JMM保证了在多核CPU多线程编程环境下,对共享变量读写的原子性、可见性和有序性。
写代码的木公
·
2019-12-30 15:00
Java内存模型之有序性问题
并发编程系列
博客传送门前言之前的文章中讲到,JMM是内存模型规范在Java语言中的体现。JMM保证了在多核CPU多线程编程环境下,对共享变量读写的原子性、可见性和有序性。
写代码的木公
·
2019-12-30 15:00
Java
并发编程系列
-(8) JMM和底层实现原理
8.JMM和底层实现原理8.1线程间的通信与同步线程之间的通信线程的通信是指线程之间以何种机制来交换信息。在编程中,线程之间的通信机制有两种,共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信,典型的共享内存通信方式就是通过共享对象进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通
后端精进之路
·
2019-12-29 23:00
[高并发]Java高
并发编程系列
开山篇--线程实现
Java是最早开始有并发的语言之一,再过去传统多任务的模式下,人们发现很难解决一些更为复杂的问题,这个时候我们就有了并发.引用多线程比多任务更加有挑战。多线程是在同一个程序内部并行执行,因此会对相同的内存空间进行并发读写操作。这可能是在单线程程序中从来不会遇到的问题。其中的一些错误也未必会在单CPU机器上出现,因为两个线程从来不会得到真正的并行执行。然而,更现代的计算机伴随着多核CPU的出现,也就
千万之路刚开始
·
2019-12-25 22:16
Java
并发编程系列
-(7) Java线程安全
7.线程安全7.1线程安全的定义如果多线程下使用这个类,不过多线程如何使用和调度这个类,这个类总是表示出正确的行为,这个类就是线程安全的。类的线程安全表现为:操作的原子性内存的可见性不做正确的同步,在多个线程之间共享状态的时候,就会出现线程不安全。7.2如何保证线程安全栈封闭所有的变量都是在方法内部声明的,这些变量都处于栈封闭状态。比如下面的例子,a和b都是在方法内部定义的,无法被外部线程所访问,
后端精进之路
·
2019-12-23 23:00
Java内存模型之可见性问题
并发编程系列
博客传送门前言之前的文章中讲到,JMM是内存模型规范在Java语言中的体现。JMM保证了在多核CPU多线程编程环境下,对共享变量读写的原子性、可见性和有序性。
写代码的木公
·
2019-12-23 16:00
Java内存模型之原子性问题
并发编程系列
博客传送门前言之前的文章中讲到,JMM是内存模型规范在Java语言中的体现。JMM保证了在多核CPU多线程编程环境下,对共享变量读写的原子性、可见性和有序性。
写代码的木公
·
2019-12-21 14:00
最简单的 Java内存模型 讲解
并发编程系列
博客传送门前言在网上看了很多文章,也看了好几本书中关于JMM的介绍,我发现JMM确实是Java中比较难以理解的概念。
写代码的木公
·
2019-12-20 11:00
Java
并发编程系列
-(6) Java线程池
6.线程池6.1基本概念在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求创建新线程和销毁线程上花费的时间和消耗的系统资源要比处理实际的用户请求的时间和资源更多
后端精进之路
·
2019-12-18 23:00
Java
并发编程系列
-(5) Java并发容器
5并发容器5.1Hashtable、HashMap、TreeMap、HashSet、LinkedHashMap在介绍并发容器之前,先分析下普通的容器,以及相应的实现,方便后续的对比。Hashtable、HashMap、TreeMap都是最常见的一些Map实现,是以键值对的形式存储和操作数据的容器类型。Hashtable是早期Java类库提供的一个哈希表实现,本身是同步的,不支持null键和值,由于
后端精进之路
·
2019-12-15 17:00
Java
并发编程系列
-(4) 显式锁与AQS
4显示锁和AQS4.1Lock接口核心方法Java在java.util.concurrent.locks包中提供了一系列的显示锁类,其中最基础的就是Lock接口,该接口提供了几个常见的锁相关的操作。publicinterfaceLock{voidlock();voidlockInterruptibly()throwsInterruptedException;booleantryLock();boo
后端精进之路
·
2019-12-13 18:00
Java
并发编程系列
-(3) 原子操作与CAS
3.原子操作与CAS3.1原子操作所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何contextswitch,也就是切换到另一个线程。为了实现原子操作,Java中可以通过synchronized关键字将函数或者代码块包围,以实现操作的原子性。但是synchronized关键字有一些很显著的问题:1、synchronized是基于阻塞锁的机制,如果被阻
后端精进之路
·
2019-12-10 23:00
【并发编程】InheritableThreadLocal使用详解
并发编程系列
博客传送门引子publicclassInheritableThreadLocalDemo{privatestaticThreadLocalthreadLocal=newThreadLocalthreadLocal
写代码的木公
·
2019-12-10 11:00
Java
并发编程系列
-(2) 线程的并发工具类
2.线程的并发工具类2.1Fork-JoinJDK7中引入了fork-join框架,专门来解决计算密集型的任务。可以将一个大任务,拆分成若干个小任务,如下图所示:Fork-Join框架利用了分而治之的思想:什么是分而治之?规模为N的问题,N阈值,将N分解为K个小规模子问题,子问题互相对立,与原问题形式相同,将子问题的解合并得到原问题的解.具体使用中,需要向ForkJoinPool线程池提交一个Fo
后端精进之路
·
2019-12-07 23:00
【并发编程】Object的wait、notify和notifyAll方法
并发编程系列
博客传送门方法简介wait方法wait方法是Object类中的一个方法。
写代码的木公
·
2019-12-06 21:00
【并发编程】Thread类的详细介绍
并发编程系列
博客传送门Thread类是Java中实现多线程编程的基础类。本篇博客就来介绍下Thread类的常用API和常见用法。
写代码的木公
·
2019-12-06 14:00
Java
并发编程系列
-(1) 并发编程基础
1.并发编程基础1.1基本概念CPU核心与线程数关系Java中通过多线程的手段来实现并发,对于单处理器机器上来讲,宏观上的多线程并行执行是通过CPU的调度来实现的,微观上CPU在某个时刻只会运行一个线程。事实上,如果这些任务不存在阻塞,也就是程序中的某个任务因为该程序控制范围之外的某些条件(通常是I/O)而导致不能继续执行,由于在任务之间切换会产生开销,因此并行的效率可能没有顺序执行的效率高,并行
后端精进之路
·
2019-12-05 22:00
【并发编程】实现多线程的几种方式
并发编程系列
博客传送门在Java中有多种方式可以实现多线程编程(记得这是一道常问的面试题,特别是在应届生找工作的时候被问的频率就更高了)。
写代码的木公
·
2019-12-04 14:00
Java
并发编程系列
-03-线程的终止
线程除了正常的结束外,还有哪些方式可以终止?设置退出标识。设置中断标识。通过设置退出标识终止线程/***@description:设置退出标识使线程终止*@author:Cyril*@create:2019/11/18*/publicclassThreadExitFlagDemoextendsThread{/***退出标识*volatile内存可见性*/publicvolatilebooleane
Cyril37
·
2019-12-02 22:22
【并发编程】并发编程中你需要知道的基础概念
并发编程系列
博客传送门多线程是Java编程中一块非常重要的内容,其中涉及到很多概念。这些概念我们平时经常挂在嘴上,但是真的要让你介绍下这些概念,你可能还真的讲不清楚。
写代码的木公
·
2019-12-02 15:00
高
并发编程系列
:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
引言HashMap、CurrentHashMap的实现原理基本都是BAT面试必考内容,阿里P8架构师谈:深入探讨HashMap的底层结构、原理、扩容机制深入谈过hashmap的实现原理以及在JDK1.8的实现区别,今天主要谈CurrentHashMap的实现原理,以及在JDK1.7和1.8的区别。哈希表1介绍哈希表就是一种以键-值(key-indexed)存储数据的结构,我们只要输入待查找的值即k
麦克劳林
·
2019-12-01 05:41
【并发编程】Java对并发编程的支持历史
并发编程系列
博客传送门本文转载,原文请点击链接本章主要对Java并发(Concurrent)在不同jdk版本中的发展简史进行学习。
写代码的木公
·
2019-11-27 10:00
【并发编程】摩尔定律失效“带来”并行编程
并发编程系列
博客传送门并发和并行在真正开始聊本文的主题之前,我们先来回顾下两个老生常谈的概念:并发和并行。
写代码的木公
·
2019-11-26 17:00
【并发编程】线程状态解析
并发编程系列
博客传送门线程的几种状态在Java中,一个线程从创建到消亡会经历新建状态(New)、就绪状态(Runnable)、运行状态(Running)、等待(Waiting)、阻塞状态(Blocked
写代码的木公
·
2019-11-12 15:00
【并发编程】ThreadLocal其实很简单
并发编程系列
博客传送门什么是ThreadLocalThreadLocal有点类似于Map类型的数据变量。
写代码的木公
·
2019-11-11 20:00
并发编程系列
之一锁
前言如何正确有效的保护共享数据是编写并行程序必须面临的一个难题,通常的手段就是同步。同步可分为阻塞型同步(BlockingSynchronization)和非阻塞型同步(Non-blockingSynchronization)。阻塞型同步是指当一个线程到达临界区时,因另外一个线程已经持有访问该共享数据的锁,从而不能获取锁资源而阻塞,直到另外一个线程释放锁。常见的同步原语有mutex、semapho
自刎
·
2019-11-05 18:32
Java
并发编程系列
-ConcurrentHashMap 1.8
原创文章,转载请标注出处:《Java
并发编程系列
-ConcurrentHashMap1.8》一、概述ConcurrentHashMap是HashMap的线程安全版本,当我们在多线程并发环境中编程时使用ConcurrentHashMap
唯一浩哥
·
2019-11-04 01:53
并发编程系列
之深入理解Synchronized
Java内存模型内存间交互操作 在介绍synchronized之前先简单的介绍一下JMM的交互操作 Java内存模型定义了8个操作来完成主内存和工作内存的交互操作。read:把一个变量的值从主内存传输到工作内存中load:在read之后执行,把read得到的值放入工作内存的变量副本中use:把工作内存中一个变量的值传递给执行引擎assign:把一个从执行引擎接收到的值赋给工作内存的变量stor
时光无声
·
2019-10-26 13:44
并发编程
java
并发编程系列
之深入理解volatile关键字
在学习volatile关键字之前先了解一下Java内存模型和happen-before原则。Java内存模型内存模型的特性 线程1写:先写入本地内存,在同步到主内存。 线程2读:先读本地内存,不能存在或失效在读主内存。 这种内存结构是基于操作系统的逻辑虚拟出来的结构,并不是真实存在的,可以屏蔽各种硬件和操作系统的差异性,实现平台一致性。而且和jvm的运行时结构也没关联。主内存存储的是实例
时光无声
·
2019-10-26 07:54
并发编程
java
并发编程系列
教程(06) - 多线程之间通讯(wait、notify、sleep、Lock锁、Condition)
代码已上传到Github,有兴趣的同学可以下载来看(https://github.com/ylw-github/Java-ThreadDemo)1.什么是多线程之间通讯?多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。2.多线程之间的通讯需求需求:第一个线程写入(input)用户,另一个线程取读取(out)用户,实现读一个,写一个操作。3.代码实现packagecom.ylw
yang_lin_wei
·
2019-10-23 16:07
#
专题
-
并发编程
并发编程系列
教程(05) - Java内存模型
共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入时,能对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(mainmemory)中,每个线程都有一个私有的本地内存(localmemory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在,它涵盖了缓存,写缓冲区,
yang_lin_wei
·
2019-10-23 15:15
#
专题
-
并发编程
并发编程系列
教程(04) - 重排序
1.数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:上面三种情况,只要重排序两个操作的执行顺序,程序的执行结果将会被改变。我们知道编译器和处理器可能会对操作做重排序。编译器和处理器在重排序时,会遵守数据依赖性,编译器和处理器不会改变存在数据依赖关系的两个操作的执行顺序。注意,这里所说的数据依赖性仅针对单个处理器中执行的
yang_lin_wei
·
2019-10-23 15:01
#
专题
-
并发编程
并发编程系列
教程(03) - Volatile
代码已上传到Github:https://github.com/ylw-github/Java-ThreadDemo1.什么是Volatile(英:[ˈvɒlətaɪl]美:[ˈvɑːlətl])可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,可以立即获取修改之后的值。在Java中为了加快程序的运行效率,对一些变量的操作通
yang_lin_wei
·
2019-10-23 14:54
#
专题
-
并发编程
并发编程系列
教程(02) - 多线程安全
文章涉及到的代码已上传到Github,有兴趣的同学可以参考下(https://github.com/ylw-github/Java-ThreadDemo)1.什么是线程安全当多个线程同时共享时,全局变量或静态变量,做写操作时,可能会发生数据冲突的过程,也就是线程安全的问题。但是做读操作是不会发生数据冲突问题。案例:需求现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果。pack
yang_lin_wei
·
2019-10-22 17:40
#
专题
-
并发编程
高
并发编程系列
(一)
高
并发编程系列
(一)Highconcurrencyprogrammingseries对某个对象加锁publicclassTa{/***synchronizedkeyword*Locksanobject*
掌上编程
·
2019-10-08 11:22
Java
Java 并发编程:volatile的使用及其原理解析
Java
并发编程系列
【未完】:•Java并发编程:核心理论•Java并发编程:Synchronized及其实现原理•Java并发编程:Synchronized底层优化(轻量级锁、偏向锁)•Java并发编程
·
2019-09-24 02:08
上一页
2
3
4
5
6
7
8
9
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他