JUC 并发编程理解与实战
文章平均质量分 96
Alascanfu
O ever youthful, O ever weeping
展开
-
JUC——Chapter02——Concurrent Access To Objects And Variables 对象和变量的并发访问 —— 读《Java多线程编程技术核心技术》笔记 ——下
程序运行出现了死循环进程且未进行销毁线程被停止永远不会被执行在启动线程时,因为变量 分别存储在公共内存及线程的私有内存当中,线程运行后在 线程的私有内存中取得 isRunning 的值一直是 true。而代码 “thread.setRunning(false);” 虽然被执行,却是将公共内存中的 isRunning 变量改成 false。这个问题就是私有内存中的值和公共内存中的值是不同步造成的,可以通过 volatile 关键字来解决,volatile 的主要作用就是当线程访问 isRunning 变量时原创 2022-06-29 23:41:54 · 118 阅读 · 0 评论 -
JUC——Chapter02——Concurrent Access To Objects And Variables 对象和变量的并发访问 —— 读《Java多线程编程技术核心技术》笔记 ——中
📚 通过使用 synchronized 关键字来声明方法 , 从运行的时间上来看,弊端突现,可以使用 synchronized 同步代码块 解决类似问题。📚 上面的示例虽然使用了 synchronized 同步代码块,但是执行效率并没有提高,还是同步运行。📚 小结:🔖 2.2.7 synchronized(this) 同步代码块是锁定当前对象的🔖 2.2.8 将任意对象作为锁同一时间只有一个线程可以执行 synchronized 同步方法中的代码。同一时间只有一个线程可以...原创 2022-06-28 01:36:11 · 80 阅读 · 0 评论 -
JUC——Chapter02——Concurrent Access To Objects And Variables 对象和变量的并发访问 —— 读《Java多线程编程技术核心技术》笔记 ——上
非线程安全问题会在同一个对象中的同一个实例变量进行并发访问时同时产生,产生的后果就是"脏读",也就是读取到的数据其实是被更改过的。线程安全实质获得实例变量的值是经过同步处理的,不会出现脏读的现象。方法中的变量不存在非线程安全问题,永远都是线程安全的,这是因为方法内部的变量具有私有特性。上述实验是两个线程同时访问同一个业务对象中的一个没有同步的方法,如果两个线程同时操作业务对象中的实例变量,则有可能会出现非线程安全问题。❓ 谁是锁用 synchronized 声明的方法所在类的对象就是锁。在 Ja原创 2022-06-28 01:29:28 · 87 阅读 · 0 评论 -
JUC——Chapter01——Java Multi-Threading Skills 多线程应用技能 —— 读《Java多线程编程技术核心技术》笔记
线程可以理解为在进程当中独立运行的子任务📚 小知识点:进程负责向操作系统申请资源。在一个进程中,多个线程可以共享进程中相同的内存或者文件资源。先有进程,后有线程。在一个进程中可以创建多个线程。1、进程虽然是相互独立的,但他们可以互相通信,较为通用的方式是使用 Socket 或 HTTP 协议。2、进程拥有共享的系统资源,比如内存、网络端口,供其内部线程使用。3、进程较重,因为创建进程需要操作系统分配资源,会占用内存。4、线程存在于进程中,是进程的一个子集,先有进程,后有线程。5、虽然线程更轻,但是线程上下.原创 2022-06-26 02:42:29 · 177 阅读 · 0 评论 -
JUC——深入理解 ThreadLocal 与源码分析 以及 概念掌握 (案例实战——ThreadLocal结合ZooKeeper实现分布式锁 )
📖本文目录📖 ThreadLocal 详解📑 ThreadLocal 简介📑 ThreadLocal 与 Synchronized 区别📑 ThreadLocal 的基本使用📑 ThreadLocal 的原理🔖 ThreadLocal 的 set() 方法🔖 什么是ThreadLocalMap🔖 ThreadLocal 的 get() 方法🔖 ThreadLocal 的 remove()方法📚 内存泄漏问题🔖 Thread 、 ThreadLocalMap 与 ThreadLocal 三者关系📑 Threa原创 2022-04-21 23:22:06 · 1520 阅读 · 1 评论