首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Java多线程
订阅
星璇
更多收藏集
微信扫码分享
微信
新浪微博
QQ
19篇文章 · 0订阅
ReentrantLock 实现原理
使用 synchronize 来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。 而 ReentrantLock 就是一个普通的类,它是基于 AQS(AbstractQueuedSynchronizer)来实现的。 是一个重入锁:一个线程…
Java 中的多线程你只要看这一篇就够了
java 多线程
java&android 线程池 - Executor 框架之 ThreadPoolExcutor&ScheduledThreadPoolExecutor 浅析(多线程编程之三)
java&android 线程池 - Executor 框架之 ThreadPoolExcutor&ScheduledThreadPoolExecutor 浅析
Java 8 并发教程:同步和锁
这份指南将会以简单易懂的代码示例来教给你如何在 Java8 中进行并发编程。这是一系列教程中的第二部分。在接下来的 15 分钟,你将会学会如何通过同步关键字,锁和信号量来同步访问共享可变变量。
Java 8 并发: Threads 和 Executors
Java 5 初次引入了Concurrency API,并在随后的发布版本中不断优化和改进。这篇文章的大部分概念也适用于老的版本。我的代码示例主要聚焦在Java 8上,并大量适用 lambda 表达式和一些新特性。如果你还不熟悉 lambda 表达式,建议先阅读 Java 8 …
Java 8 并发:同步和锁
当我们编写多线程代码访问可共享的变量时需要特别注意,下面是一个多线程去改变一个整数的例子。 定义一个变量 count,定义一个方法 increment() 使 count 增加 1. 上面的代码执行结果并不是10000,原因是我们在不同的线程上共享一个变量,而没有给这个变量的访…
浅谈偏向锁、轻量级锁、重量级锁
为了换取性能,JVM在内置锁上做了非常多的优化,膨胀式的锁分配策略就是其一。理解偏向锁、轻量级锁、重量级锁的要解决的基本问题,几种锁的分配和膨胀过程,有助于编写并优化基于锁的并发程序。 内置锁是JVM提供的最便捷的线程同步工具,在代码块或方法声明上添加synchronized关…
Java多线程之线程中止
在这里虽然调用了interrupt()方法,但该线程并不会停下。因为该方法只是设置了一个中断状态,但该线程并未对此中断状态做出反应。 以下代码进行了对中断状态的处理。 在catch语块中本可以进行中断退出,但我们没这么做,因为这样会破坏数据一致性和完整性(和直接使用shop()…
并发编程锁之ReentrantLock总结
之前我讲过,在并发编程中一个比较难解决的就是共享资源并发访问控制问题。如果同步做的不好,很容易出现不一致问题,从而导致业务逻辑的错误;但是如果对共享资源控制的过于严格,又很容易对性能造成很大的影响。
简单聊一聊ThreadPoolExecutor
线程池的诞生于JDK1.5,主要的目的是解决我们在使用线程的时候通常都是重复的创建和销毁,为了让线程能够得到复用,避免我们重复的创建和销毁,提高我们的效率,降低内存的开销。没错又是Doug Lea大神又搞出了线程池这一强力工具。 我们最熟悉的线程池使用案例应该就是数据库连接池,…