![](https://img-blog.csdnimg.cn/dc4bea37cb6e4b04819d6f5d0d6089c8.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java 并发编程
文章平均质量分 86
java 基础之多线程与JUC
1999
三线农村户口程序媛
展开
-
每天一个知识点- 线程池中线程执行任务发生异常会怎么样
每天一个知识点- 线程池中线程执行任务发生异常会怎么样原创 2022-08-24 21:09:10 · 1068 阅读 · 2 评论 -
juc- 从源码角度分析 AbstractQueuedSynchronizer 的实现
juc- 从源码角度分析 AbstractQueuedSynchronizer 的实现原创 2022-08-13 17:31:15 · 276 阅读 · 0 评论 -
juc 之 一文看懂 CyclicBarrier、CountDownLatch、Semaphore的使用
juc 之 一文看懂 CyclicBarrier、CountDownLatch、Semaphore的使用原创 2022-08-13 12:23:37 · 310 阅读 · 0 评论 -
多线程 - 01 之 多线程编程一定快嘛?
多线程编程一定快嘛运行测试测试结果原因上下文切换如何有效的避免上下文切换在面试中经常被问到多线程一定比单线程快嘛?希望看完这篇文章你可以后一个很好的答案运行测试我们使用下面这段代码测试一下多线程和单线程的运行速度,代码来源—java并发编程的艺术private static final long count = 100000000L; public static void main(String[] args) throws InterruptedException { co原创 2021-09-27 10:46:02 · 75 阅读 · 0 评论 -
如何有效的避免死锁
如何有效的避免死锁演示代码查看死锁如何避免死锁演示代码public class DeadLockDemo { private static String A = "A"; private static String B = "B"; public static void main(String[] args) { new DeadLockDemo().deadLock(); } private void deadLock() {原创 2021-09-27 11:19:41 · 78 阅读 · 0 评论 -
共享内存之内存-volatile -- 07
共享内存之内存并发编程三大性质可见性原子性指令重排volatile原理并发编程三大性质原子性:保证指令不会受到线程上下文切换影响可见性:保证指令不会受cpu缓存影响有序性:保证指令不会受cpu指令并行优化的影响可见性可见性是指当一个线程修改了共享变量后,其他线程能够立即得知这个修改。volatile关键字 (易变)可以用来修饰成员变量和竞态成员变量,它可以避免线程从自己的工作缓存中查找变量的值,必须要主存中获取他的值,线程造作volatile变量都是直接操作主存synchroni原创 2021-07-21 20:28:33 · 461 阅读 · 0 评论 -
共享模型之无锁 - 08
共享模型之无锁 CAS (compareAndSet 或者 compareAndSwap) 比较并且设置CAS原理图![在这里插入图片描述](https://img-blog.csdnimg.cn/9bfc4c34a54345aba17f8ae401315b6a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODA4NDcy,size_原创 2022-08-06 14:41:08 · 78 阅读 · 0 评论 -
java线程池的参数设置
线程池的参数设置原创 2022-07-23 21:23:39 · 1410 阅读 · 0 评论 -
面试官-说一说线程间通信的几种方式
线程间通信的几种方式1. volatile和synchronized关键字2. 等待/通知机制3. 管道输入/输出流4.Thread.join()5. ThreadLocal当线程启动时,每个线程都会有自己的栈空间,那么如何让线程间进行通信呢介绍下面几种方式1. volatile和synchronized关键字volatile 保证了修饰字段的可见性,可以利用 volatile 关键字 修饰一个boolean 变量 控制多个线程之间的执行的业务逻辑,但是过多的使用 volatile 时不必要的,他会原创 2021-09-29 15:20:56 · 1399 阅读 · 0 评论 -
双重检查锁定的问题 ---单例模式
双重检查锁定的问题问题原因解决方案我们在开发过程中,为了限制资源的访问,常常使用单例模式,为了防止单例模式下大对象的开销,可以使用延迟加载的方式在第一次获取对象时来初始化他。看一下下面的代码public class UnsafeLazyInitialization { private static Instance instance; public static Instance getInstance() { if (instance == null) instance = ne原创 2021-09-28 14:26:42 · 311 阅读 · 2 评论 -
ReentrantLock 可重入锁 --06
ReentrantLockReentrantLock可重入锁可打断锁超时公平锁条件变量ReentrantLock相对于 synchronized可中断可以设置超时时间可以设置公平锁 (防止饥饿)支持多个条件变量 (类似于支持多个 waitSet)与synchronized一样 ,都支持可重入基本语法 ReentrantLock reentrantLock = new ReentrantLock(); reentrantLock.lock(); try原创 2021-07-20 18:02:22 · 152 阅读 · 0 评论 -
线程状态转换与活跃性 - 05
线程状态转换线程状态转换二级目录三级目录线程状态转换1. NEW <—> RUNNABLE调用 t.start() 方法时2. RUNNABLE <—> WAILTING调用 obj.wait() 方法时 ,t1 从RUNNABLE 进入 WAILTING调用 obj.nitity() 、obj.nitityAll() 、t1.interrupt() (这里的interrupt指的是锁对象调用了wait()方法之后)竞争锁成功,线程从 WAILTIN原创 2021-07-16 20:48:08 · 112 阅读 · 0 评论 -
synchronized 底层原理 - 04
synchronized 底层原理Java对象头Monitor(锁)三级目录Java对象头以32位虚拟机为例普通对象|--------------------------------------------------------------|| Object Header (64 bits) ||------------------------------------|-------------------------|| Mark Word (原创 2021-07-15 15:17:04 · 86 阅读 · 0 评论 -
线程安全分析与处理-03
线程安全分析与处理共享模型之管程线程安全问题 原因1. 临界区2. 竞态条件synchronized解决方案应用之互斥synchronizedsynchronized变量的线程安全分析成员变量和静态变量局部变量共享模型之管程线程安全问题 原因1. 临界区static int count = 0; static void increment() // 临界区 { count++; } static void decrement() //原创 2021-07-12 19:59:53 · 106 阅读 · 0 评论 -
java线程运行原理 看这一篇就差不多了02
java线程运行原理1.栈帧(存在于java栈) public static void main(String[] args) { method1(3); } private static void method1(int x) { int y = x + 1; Object m =method2(); System.out.println(y); } private static Object原创 2021-07-09 21:51:32 · 148 阅读 · 0 评论 -
java 线程创建方式 01
java 线程创建方式1. 使用Thread Thread t1 = new Thread(){ @Override public void run () { log.debug("running"); } }; t1.setName("t1"); t1.start(); log.debug("running");2. 使用 Runn原创 2021-07-08 20:08:01 · 91 阅读 · 0 评论