
java多线程与并发
文章平均质量分 60
java多线程与并发
乐之者v
快乐编程,一生编程。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程池的线程数设置
最好使用自定义线程池ThreadPoolExecutor,控制好最大线程数、阻塞队列长度,避免OOM。详情见: https://www.cnblogs.com/expiator/p/17140760.html。原创 2025-05-31 11:44:07 · 656 阅读 · 0 评论 -
java8多线程的lambda
Lambda表达式lambda表达式,实际上就是匿名函数。格式如下:()里面是函数的参数,中间是箭头, {}是函数的代码块,{}包含了函数的执行以及返回结果。()->{}新建线程不使用lambda:Runnable runnable = new Runnable() { @Override public void run() { ...原创 2021-05-10 17:08:00 · 99 阅读 · 0 评论 -
java多线程通信方式之一:wait/notify
java多线程之间的通信方式有多种:1.wait(),notify(),notifyAll()方法;2.join()方法;3.通过volatile共享内存的方式进行线程通信的;4.interrupt()方法中断线程; 5.管道通信。本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法。①wait() 与 notify/notifyAll ...原创 2018-07-10 23:03:00 · 49 阅读 · 0 评论 -
java并发:jdk1.8中ConcurrentHashMap源码浅析
ConcurrentHashMap是线程安全的。可以在多线程中对ConcurrentHashMap进行操作。在jdk1.7中,使用的是锁分段技术Segment。数据结构是数组+链表。对比jdk1.7,在jdk1.8中,ConcurrentHashMap主要使用了CAS(compareAndSwap)、volatile、synchronized锁。跟jdk1.8中的HashMap一样,数据结...原创 2019-02-17 21:44:00 · 167 阅读 · 0 评论 -
java并发:CAS算法和ABA问题
CAS算法是硬件对于并发的支持,针对多处理器操作而设计的处理器中的一种特殊指令。CAS用于管理对共享数据的并发访问。java的并发包中,AQS、原子操作类等都是基于CAS实现的。CAS 是一种 无锁的 非阻塞算法的 实现。CAS(Compare-And-Swap),简单来说就是比较和替换。比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一...原创 2018-08-09 17:15:00 · 55 阅读 · 0 评论 -
java并发中的锁
java中的锁,最基本的是Lock接口。Lock接口中的方法,主要是:lock(): 获取锁,lock()方法会对Lock实例对象进行加锁,因此所有对该对象调用lock()方法的线程都会被阻塞,直到该Lock对象的unlock()方法被调用。unlock(): 释放锁,Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在fina...原创 2018-07-25 17:31:00 · 50 阅读 · 0 评论 -
java并发特性:原子性、可见性、有序性
要想并发程序正确地执行,必须要保证原子性、可见性以及有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。1、原子性(Atomicity) 原子性是指在一个操作中就是cpu不可以在中途暂停然后再调度,既不被中断操作,要不执行完成,要不就不执行。如果一个操作时原子性的,那么多线程并发的情况下,就不会出现变量被修改的情况比如 a=0;(a非long和double类型) 这个操作是不可...原创 2018-06-25 22:52:00 · 104 阅读 · 0 评论 -
java并发:读写锁ReadWriteLock
在没有写操作的时候,两个线程同时读一个资源没有任何问题,允许多个线程同时读取共享资源。但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写。简单来说,多个线程同时操作同一资源时,“读读共存,写写不共存,读写不共存”。读写锁的锁定规则如下:获得读锁后,其它线程可获得读锁而不能获取写锁获得写锁后,其它线程既不能获得读锁也不能获得写锁.import java.uti...原创 2018-07-26 21:33:00 · 76 阅读 · 0 评论 -
java多线程与并发笔记
0.多线程,主要用来提高程序效率,处理耗时的操作。多个线程写在同一个类里调用,并不是说写在前面的线程就会先运行。各个线程会进行争抢,能抢到系统资源的才会先运行。因此,同一个程序,多个线程运行,可能每次运行的结果都不一样。1.线程安全指的是,主要是指多线程操作同一个数据时,防止脏数据的产生,避免数据紊乱。线程安全的情况:就是当一个线程需要对这个数据进行改写时,会给这个数据上一个同步锁,比如A...原创 2016-05-30 22:59:00 · 54 阅读 · 0 评论 -
java并发:volatile关键字
java并发需要保证原子性,可见性,有序性。http://www.cnblogs.com/expiator/p/9226775.html一、volatile关键字作用如下:1、volatile关键字,可以保证可见性。即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。2、volatile无法保证对变量的任何操作都是原子性的。3、volatile关键字能禁止指令重排序,所以v...原创 2018-08-07 21:02:00 · 50 阅读 · 0 评论 -
java并发:Semaphore
Semaphore是常见的同步工具类之一。Semaphore翻译成字面意思为 信号量,Semaphore可以控制同时访问的线程个数,也称为permit(许可)。在构造函数中指定permits个数。 /** * Creates a {@code Semaphore} with the given number of * permits and nonfair fa...原创 2018-08-22 22:56:00 · 72 阅读 · 0 评论 -
java并发:Callable、Future和FutureTask(转载)
创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。更详细的内容讲解,参见: h...原创 2018-08-23 21:48:00 · 50 阅读 · 0 评论 -
java并发:AtomicInteger 以及CAS无锁算法【转载】
1AtomicInteger解析众所周知,在多线程并发的情况下,对于成员变量,可能是线程不安全的;一个很简单的例子,假设我存在两个线程,让一个整数自增1000次,那么最终的值应该是1000;但是多线程情况下并不能保证原子性;最终的结果极有可能不是1000;看如下的代码:package automic; public class AtomicIntegerTest extends...原创 2018-08-09 15:35:00 · 49 阅读 · 0 评论 -
大型网站应用之海量数据和高并发解决方案总结一二 【转载】
原文地址:https://mp.weixin.qq.com/s?__biz=MzI1NDQ3MjQxNA==&mid=2247483917&idx=1&sn=db1b0a2093d3c0d1bb6e32263abfe137&chksm=e9c5fbbcdeb272aae9635c628f85bccbc52c9a330b902f2d4ccd172dcef0731c...原创 2018-08-08 17:06:00 · 57 阅读 · 0 评论 -
java并发:Condition的应用
Condition类可以使线程等待,也可以唤醒线程。Condition类的await方法和Object类的wait方法等效Condition类的signal方法和Object类的notify方法等效Condition类的signalAll方法和Object类的notifyAll方法等效注意:awit(),signal(),signalAll()这些方法,都必须先进行线程同步后,才可以使用,否则...原创 2018-07-27 11:51:00 · 53 阅读 · 0 评论 -
java并发:CopyOnWriteArrayList简单理解
Java集合的快速失败机制 “fail-fast”"fail-fast"是java集合的一种错误检测机制,当多个线程对集合进行结构上的改变的操作时,有可能会产生 fail-fast 机制。例如:假设存在两个线程(线程1、线程2),线程1通过Iterator在遍历集合A中的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,而不是简单的修改集合元素的内容),那么这个时候程序就会抛出 C...原创 2018-12-11 21:32:00 · 84 阅读 · 0 评论 -
《java并发编程实战》笔记
《java并发编程实战》这本书配合并发编程网中的并发系列文章一起看,效果会好很多。并发系列的文章链接为: Java并发性和多线程介绍目录建议: 《java并发编程实战》第3章和第4章可以暂时先跳过。。这部分内容的文字和概念很多,代码块偏少。不容易看进去。一、线程1.线程的使用可以提升程序的性能。2.线程如果没有同步,操作的执行顺序是不可预测的。3.线程之间共享数据时,必须使用同步机制。...原创 2019-02-17 21:48:00 · 59 阅读 · 0 评论