
并发 & 线程
文章平均质量分 60
多线程
陆克和他的那些代码
程序员陆克,专注社交电商 & 内容流量,关注互联网自媒体。
展开
-
Transaction - 记一次 Spring 事务联合 Redis 挂了引发的生产事故
Transaction - 记一次 Spring 事务联合 Redis 挂了引发的生产事故原创 2023-09-20 18:04:59 · 495 阅读 · 2 评论 -
多线程 - 一篇带你理解 InheritableThreadLocal 作用
代码/** * @author Lux Sun * @date 2021/12/30 */public class Cat { public Cat(String name) { this.name = name; } private String name; public String getName() { return name; } public void setName(String name)原创 2022-01-07 18:05:03 · 411 阅读 · 0 评论 -
多线程 - Java 多线程编程排查异常技巧
一句话在可疑觉得会异常的地方包个 try catch 即可~因为有时在多线程里,异常会被子线程隐藏住,所以用此技巧可以将异常显明出来!原创 2021-10-12 14:16:41 · 337 阅读 · 0 评论 -
ExecutorService - invokeAll 和 invokeAny 使用场景
ExecutorService - invokeAll 和 invokeAny 使用场景原创 2021-09-28 18:42:03 · 787 阅读 · 0 评论 -
多线程 - Callable、Future 和 FutureTask 简单应用
多线程 - Callable、Future 和 FutureTask 简单应用原创 2021-09-28 18:36:05 · 332 阅读 · 2 评论 -
多线程 - 多线程中使用静态方法存在线程安全的问题
类的成员分两类,静态成员(static member)和实例成员(instance menber),静态成员属于类,实例成员则属于对象,即类的实例。我们知道,静态字段和静态方法的调用都是通过类来调用的,静态方法不会对特定的实例操作,只能调用调用类中的其他属性和静态方法,不能调用类中的非静态属性和非静态方法。实例方法可以对特定的实例操作,既能访问静态属性和静态方法,也能访问实例属性和实例方法。在多线程中使用静态方法是否有安全问题?这样看在静态方法中时候使用了静态成员。在多线程中使用一个静态方法的时候,原创 2021-08-19 18:18:33 · 3873 阅读 · 4 评论 -
线程 - 线程优先级的高低和执行顺序的关系
线程的调度由操作系统负责,即使是编译器也没办法完全包办。也即是说,运行时轮到哪个线程运行,完全由操作系统决定,优先级高的,只是轮到机会高一些,并非完全独占CPU运行;优先级低的也并非要等高优先级的线程运行完才能轮到,相对来说,轮到的机率低一些。如果是VxWorks这样的实时系统,那么优先级高表示优先得到响应(这时候它不一定在执行,也可以在睡眠);Linux系统优先级高表示它越倾向于IO消耗型,那么它在中断到来时肯定要尽快投入运行,但是相对CPU消耗型来说,实际上它肯定是等待的时候更多,所以原创 2021-04-26 13:34:53 · 2233 阅读 · 0 评论 -
线程 - 一句话说明白 Java 线程池中 shutdown 和 shutdownNow 的区别
线程 - 一句话说明白 Java 线程池中 shutdown 和 shutdownNow 的区别原创 2021-04-05 17:13:05 · 416 阅读 · 0 评论 -
线程 - 父线程与子线程传值问题
线程 - 父线程与子线程传值问题原创 2020-12-14 17:44:15 · 1509 阅读 · 4 评论 -
线程 - 守护线程或用户线程(setDaemon)
线程 - 守护线程或用户线程(setDaemon)原创 2020-10-30 18:06:43 · 408 阅读 · 0 评论 -
线程 - 并发与并行的区别是什么(生活版)?
线程 - 并发与并行的区别是什么(生活版)?原创 2020-10-28 14:09:03 · 252 阅读 · 0 评论 -
Java并发编程 - 一段代码解释 ThreadLocal 特性
/** * @author Lux Sun * @date 2020/9/10 */public class demo implements Runnable { private static ThreadLocal<String> threadLocal = new ThreadLocal<>(); @Override public void run() { System.out.println(threadLocal.get(.原创 2020-09-10 13:29:06 · 268 阅读 · 0 评论 -
线程 - wait & sleep 区别
线程 - wait & sleep 区别原创 2020-04-24 16:31:48 · 260 阅读 · 0 评论 -
Java并发编程 - 自旋锁 & 互斥锁的区别
Java并发编程 - 自旋锁 & 互斥锁的区别原创 2020-04-17 09:24:30 · 443 阅读 · 0 评论 -
Java并发编程 - 有状态 & 无状态的对象区别
Java并发编程 - 有状态 & 无状态的对象区别原创 2020-04-16 13:03:05 · 706 阅读 · 0 评论 -
Java并发编程 - HashMap 死循环
所以在并发的情况,发生扩容时,可能会产生循环链表,在执行get的时候,会触发死循环,引起CPU的100%问题,所以一定要避免在并发环境下使用HashMap。曾经有人把这个问题报给了Sun,不过Sun不认为这是一个bug,因为在HashMap本来就不支持多线程使用,要并发就用ConcurrentHashmap。原创 2020-04-16 12:59:07 · 379 阅读 · 0 评论 -
Java并发编程 - HashMap & ConcurrentHashMap 解析
Java并发编程 - HashMap & ConcurrentHashMap 解析原创 2020-04-16 12:59:29 · 338 阅读 · 0 评论 -
Java并发编程 - 多线程并发最佳实践
Java并发编程 - 多线程并发最佳实践原创 2020-04-16 12:03:29 · 333 阅读 · 0 评论 -
Java并发编程 - 死锁
死锁的必要条件1、互斥条件 在某一段时间,只能由一个线程占用,如果此时有其他的线程请求,那么请求者只能等待,直到资源释放。2、请求和保持条件 已经占有至少一个资源,有提出请求其他资源,该资源已经被其他线程占用,请求进程阻塞,但又对已获得的线程不放。3、不剥夺条件 已经占有的资源不会被剥夺,只能自己释放。4、环路等待条件 发生死锁的时候,一定存在一个进程,他是一个死锁的...原创 2020-04-16 12:01:39 · 352 阅读 · 0 评论 -
Java并发编程 - ThreadPoolExecutor 应用
newCachedThreadPool: 可缓存线程池,可灵活回收空闲线程newFixedThreadPool: 定长线程池,可控制线程的最大并发数,超出的线程会在队列中等待newScheduledThreadPool: 定时线程池,支持定时和周期性任务的执行newSingleThreadExecutor: 单线程化的线程池,保证所有任务按照指定顺序(先入...原创 2020-04-16 11:15:34 · 355 阅读 · 0 评论 -
Java并发编程 - ThreadPoolExecutor 简介
三个参数的关系(当前线程数 ctn)1. 当cnt<corePoolSize,直接创建新线程处理任务,即使线程池中其他线程空闲。2. 当corePoolSize<=ctn<maximumPoolSize,只有当workQueue满的时候才创建新的线程去处理任务。3. 当corePoolsize=maximumPoolsize时,创建的线程池大小是固定的,如...原创 2020-04-16 10:55:43 · 322 阅读 · 0 评论 -
Java并发编程 - 公平锁 & 非公平锁
Java并发编程 - 公平锁 & 非公平锁原创 2020-04-15 23:18:55 · 387 阅读 · 0 评论 -
JUC - BlockingQueue
JUC - BlockingQueue原创 2020-04-15 23:11:00 · 289 阅读 · 0 评论 -
JUC - ForkJoin
JUC - ForkJoin原创 2020-04-15 21:37:18 · 317 阅读 · 0 评论 -
JUC - FutureTask(Runnable + Future)
package com.mmall.concurrency.example.aqs;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;@Slf4jpublic class FutureTaskExample { ...原创 2020-04-15 20:35:09 · 331 阅读 · 0 评论 -
JUC - Future
JUC - Future原创 2020-04-15 20:29:26 · 671 阅读 · 0 评论 -
线程 - 守护线程
线程 - 守护线程原创 2020-04-15 20:11:23 · 341 阅读 · 0 评论 -
Java并发编程 - 乐观锁 & 悲观锁
Java并发编程 - 乐观锁 & 悲观锁原创 2020-04-15 16:50:15 · 386 阅读 · 0 评论 -
线程 - wait、await 区别
线程 - wait、await 区别原创 2020-04-15 11:55:28 · 2543 阅读 · 0 评论 -
线程 - 你真的懂 wait、notify、notifyAll 吗?
线程 - 你真的懂 wait、notify、notifyAll 吗?原创 2020-04-15 11:52:22 · 340 阅读 · 0 评论 -
线程 - Java 多线程编程
线程 - Java 多线程编程原创 2019-09-02 12:22:02 · 246 阅读 · 0 评论 -
线程 - 带返回值的多线程
线程 - 带返回值的多线程原创 2019-09-02 11:52:56 · 871 阅读 · 0 评论 -
线程 - 获取 Java 线程返回值的几种方式
线程 - 获取 Java 线程返回值的几种方式原创 2019-09-01 22:23:55 · 997 阅读 · 0 评论 -
线程 - 这段危险代码90%的人都写过!
最近一个同学发来消息说,公司里有一段代码使用的线程经常会发生一些莫名其妙的问题。让我帮忙看看,我仔细看了很多遍线程的相关代码。最后注意到了 InterruptException 异常,把想法和 demo 代码给他说了后,问题果真被解决了。关于这个问题,我通过一段简化的代码来给大家演示一下。看到上面这段 demo 了吗?多简单,多熟悉啊。但是有一个问题,90% 的人可能都没有遇到,但...原创 2019-05-27 23:41:13 · 300 阅读 · 0 评论 -
多线程 - Synchronized 篇
一、Synchronized简介Ps1:join() 方法作用:等待线程执行完后才会执行下面的接下来的语句。Ps2:两个线程同时a++, 最后结果会比预计的少(读取a, a++, 将a写入内存),所以每一步执行完都有可能被打断,所以a值有可能没写进内存就执行另一个线程的a++操作了,so...二、Synchronized的两种用法(对象锁和类锁)1、对象锁...原创 2019-01-04 18:19:29 · 473 阅读 · 0 评论 -
Java - 多线程
什么是多线程a、进程的概念:进程是指可执行程序并存放在计算机存储器的一个指令序列,它是一个动态执行的过程。b、线程是比进程还要小的运行单位,一个进程包含多个线程。c、线程可以看做一个子程序。Ps:之所以看起来好像它们是同时运行是因为时间片单位很小的时候,当它们属于轮流运行时,看起来就像“同时运行”。线程的创建创建一个Thread类,或者一个Thread子...原创 2020-03-24 11:08:07 · 456 阅读 · 0 评论 -
Java并发编程 - 不可重入锁 & 可重入锁
Java并发编程 - 不可重入锁 & 可重入锁原创 2020-04-15 11:42:03 · 373 阅读 · 0 评论 -
Java并发编程 - AQS 之 Condition
Java并发编程 - AQS 之 Condition原创 2020-04-15 11:39:34 · 337 阅读 · 0 评论 -
Java并发编程 - AQS 之 StampedLock
Java并发编程 - AQS 之 StampedLock原创 2020-04-15 11:37:54 · 371 阅读 · 0 评论 -
Java并发编程 - AQS 之 ReentrantReadWriteLock
介绍ReentrantLock是互斥排他锁,同一时间只能有一个线程在执行任务,ReentrantLock支持锁的重入功能,虽然保证了线程的安全性,但是效率不高,实际上应该是写操作互斥,读操作共享。而jdk提供了读写锁ReentrantReadWriteLock。公共代码(下面四种情况代码根据时间等候判断区别)public class MyTask { private ...原创 2020-04-15 09:56:05 · 426 阅读 · 0 评论