
java并发编程
文章平均质量分 91
别浪呀
这个作者很懒,什么都没留下…
展开
-
java--Lock锁
锁是一种工具,用于控制对共享资源的访问Lock和synchronized,这两个是最常见的锁,它们都可以达到线程安全的目的,但是在使用上和功能上又有较大的不同。Lock并不是用来代替synchronized的,而是当使用synchronized不合适或不足以满足要求的时候,来提供高级功能的。Lock接口最常见的实现类,是ReentrantLook通常情况下,Lock只允许一个线程来访问这个共享资源,不过有时候,一些特殊的实现也可允许并发访问。比如,ReadWriteLock里面的ReadLock。原创 2023-04-26 17:21:56 · 1312 阅读 · 0 评论 -
java--ThreadLocal详解
1.ThreadLocal的用途两个使用场景1.1场景1每个线程对象需要一个共享对象(通常是工具类,典型需要使用的类有SimpleDateFormat和Radmon)1.2场景2每个线程内需要保存,全局变量(在拦截器中获取用户信息)可以让不同方法直接使用,避免参数传递的麻烦2.使用ThreadLocal带来的好处3.主要方法介绍原创 2023-04-22 05:56:31 · 1547 阅读 · 0 评论 -
java并发编程--并发队列
/** * 并发Queue * 在并发队列上JDK提供了两套实现, * 一个是ConcurrentLinKedQueue为代表的高性能队列 * 一个是BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue */public class ConcurrentQueueDemo { }package cn.bufanli.test.Queue;im...原创 2019-11-27 00:12:50 · 715 阅读 · 0 评论 -
java并发编程--同步容器类&并发类容器
package cn.bufanli.test.synchronizedDemo;import java.util.Collections;import java.util.HashMap;import java.util.Map;import java.util.Vector;/** * 同步类容器都是线程安全的,但在某些场景下可能需要加锁来保护复合操作 * 复合操作如: 迭...原创 2019-11-25 22:10:44 · 761 阅读 · 0 评论 -
java并发编程--单例&多线程
package cn.bufanli.test.singleton;/** * 单例&多线程 * 单例模式,最常见的就是饥饿模式和懒汉模式,一个直接实例化对象 * 一个在调用方法时进行实例化对象,在多线程中,考虑到性能和线程安全问你题, * 我们一般选择下面两种单例模式,在提高性能的同时,又保证了线程安全 * dubble check instance 两次确认 * ...原创 2019-11-25 21:34:13 · 639 阅读 · 0 评论 -
java并发编程--ThreadLocal 概念
package cn.bufanli.test;/** * ThreadLocal 概念: 线程局部变量,使用一种多线程间并发访问变量的解决方案. * 与其synchronized等加锁的方式不同,ThreadLocal 完全不提供锁,而使用空间换时间的 * 手段,为每个线程提供变量的独立副本,以保障线程安全 * 从性能上说,ThreadLocal不具备绝对的优势,在并发不是很高的时...原创 2019-11-25 01:31:21 · 647 阅读 · 0 评论 -
java并发编程--使用wait(等待)/notify(通知) 模拟queue
package cn.bufanli.test.Queue;import java.util.LinkedList;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicInteger;/** * 使用wait(等待)/notify(通知) 模拟queue * BlockingQ...原创 2019-11-25 01:12:12 · 349 阅读 · 0 评论 -
java并发编程--线程之间的通信
使用死循环+volatile关键字 方法实现线程间的通信.package cn.bufanli.test;import java.util.ArrayList;import java.util.List;/** * 多线程之间的通信 * 线程是操作系统中独立的个体,但这些个体如果不经过特殊处理就不能成为一个整体, * 线程之间的通信就成为整体的必用方式...原创 2019-11-06 22:35:13 · 192 阅读 · 0 评论 -
java并发编程--脏读
package cn.bufanli.test;/** * 脏读 * 业务整体需要使用完整的synchronized 保持业务的原子性 */public class DirtyRead { private String username = "un"; private String password = "ps"; public synchronized ...原创 2019-11-05 10:39:45 · 283 阅读 · 0 评论 -
java并发编程--对象锁的同步和异步
package cn.bufanli.test;/** * 同步: synchronized * 同步的概念是共享; * 异步: asynchronized * 异步的概念是独立,相互之间没有任何制约.和http发ajax请求,页面还可以做其他操作,二者没有任何关系 * 同步的目的就是为了线程安全,对于线程来说,需要满足两个特性: 原子性 (同步) 可...原创 2019-11-04 14:16:55 · 334 阅读 · 0 评论 -
java并发编程--线程安全
package cn.bufanli.test;/** * 线程安全的概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为, * 那么这个类(对象或方法)就是线程安全的 * synchronized关键字可以再任意对象级方法上加锁,而加锁的这段代码称为"互斥区"或者"临界点" */public class MyThread extends Thread{...原创 2019-11-04 13:43:33 · 146 阅读 · 0 评论 -
java并发编程--synchronized关键字
package cn.bufanli.test;/** * 关键字 synchronized 关键字取得的锁都是对象锁,而不是一段代码(方法) 当做锁 * 所以代码中哪个线程synchronized关键字的方法 哪个线程就持有该方法所属对象的锁(lock) *多线程多个锁:多个线程每个线程都可以拿到自己指定的锁.分别获得锁之后,执行synchronized方法体的内 *...原创 2019-11-01 23:42:20 · 325 阅读 · 0 评论