首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
多线程
订阅
用户名啥的
更多收藏集
微信扫码分享
微信
新浪微博
QQ
10篇文章 · 0订阅
解锁Java多线程:如何控制线程T1、T2、T3的执行顺序(二)?
除了之前提到的几种方法(如join()、CountDownLatch、Semaphore、单线程池、synchronized和CompletableFuture)之外,确实还有一些其他方法能够保证线程
解锁Java多线程:如何控制线程T1、T2、T3的执行顺序(一)?
要了解在多线程编程方面的理解和应用。讨论如何在Java中确保多个线程按顺序执行,常见的做法包括使用join()、CountDownLatch、Semaphore、单线程池、synchronized和C
HashMap的死循环-HashMap Infinite Loop
从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Hang在了HashMap.get(…
死磕 java并发包之AtomicStampedReference源码分析(ABA问题详解)
AtomicStampedReference是java并发包下提供的一个原子类,它能解决其它原子类无法解决的ABA问题。 ABA问题发生在多线程环境中,当某线程连续读取同一块内存地址两次,两次得到的值一样,它简单地认为“此内存地址的值并没有被修改过”,然而,同时可能存在另一个线…
死磕 java并发包之AtomicInteger源码分析
AtomicInteger是java并发包下面提供的原子类,主要操作的是int类型的整型,通过调用底层Unsafe的CAS等方法实现原子操作。 原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换。 原子操作可以是一个步骤,…
死磕 java魔法类之Unsafe解析
本章是java并发包专题的第一章,但是第一篇写的却不是java并发包中类,而是java中的魔法类sun.misc.Unsafe。 Unsafe为我们提供了访问底层的机制,这种机制仅供java核心类库使用,而不应该被普通用户使用。 但是,为了更好地了解java的生态体系,我们应该…
Java线程生命周期与状态切换
最近有点懒散,没什么比较有深度的产出。刚好想重新研读一下JUC线程池的源码实现,在此之前先深入了解一下Java中的线程实现,包括线程的生命周期、状态切换以及线程的上下文切换等等。编写本文的时候,使用的JDK版本是11。 在JDK1.2之后,Java线程模型已经确定了基于操作系统…
面试并发volatile关键字时,我们应该具备哪些谈资?
线程 B 读一个 volatile 变量,实质上是线程 B 接收了之前某个线程发出的(在写这个 volatile 变量之前对共享变量所做修改的)消息。 线程 A 写一个 volatile 变量, 随后线程 B 读这个 volatile 变量, 这个过程实质上是线程 A 通过主内…
精通ThreadPoolExcutor(长期更新)
ThreadPoolExecutor会根据你设置的核心线程数和最大线程数来调整线程池的大小。 当你调用threadPoolExecutor.execute(Runnable)时,如果池中线程数小于核心线程数,threadPoolExecutor会创建一个新的线程,即使其他的核心…
8种创建Java线程的方式,你知道几个?
继承Thread类并重写run()方法,这种方式的弊端是一个类只能继承一个父类,如果这个类本身已经继承了其它类,就不能使用这种方式了。 实现Runnable接口,这种方式的好处是一个类可以实现多个接口,不影响其继承体系。 使用匿名类的方式,一是重写Thread的run()方法,…