【多线程】Java并发中的锁(草稿)
可重入锁Synchronized
1 public class DemoTest {
2 public static void main(String[] args) {
3 final DemoTest demoTest = new DemoTest();
4
5 Thread thread1 = new Thread(new Runnable() {
6 @Override
7 public void run() {
8 System.out.println(Thread.currentThread().getName() + "run");
9 demoTest.method1();
10 }
11 });
12 thread1.setName("thread-1");
13 thread1.start();
14
15 Thread thread2 = new Thread(new Runnable() {
16 @Override
17 public void run() {
18 System.out.println(Thread.currentThread().getName() + "run");
19 demoTest.method2();
20 }
21 });
22 thread2.setName("thread-2");
23 thread2.start();
24 }
25
26 public synchronized void method1() {
27 System.out.println("method1 run in" + Thread.currentThread().getName());
28 try {
29 Thread.sleep(1000);
30 method2();
31 } catch (InterruptedException e) {
32 e.printStackTrace();
33 }
34 }
35
36 public synchronized void method2() {
37 System.out.println("method2 run in" + Thread.currentThread().getName());
38 }
39
40 }
运行结果
thread-1run
method1 run inthread-1
thread-2run
method2 run inthread-1
method2 run inthread-2
11
【多线程】Java并发中的锁(草稿)的更多相关文章
- java并发中的锁
java中的锁,最基本的是Lock接口. Lock接口中的方法,主要是: lock(): 获取锁,lock()方法会对Lock实例对象进行加锁,因此所有对该对象调用lock()方法的线程都会被阻塞,直 ...
- java并发中的Synchronized关键词
文章目录 为什么要同步 Synchronized关键词 Synchronized Instance Methods Synchronized Static Methods Synchronized B ...
- Java并发编程:锁的释放
Java并发编程:锁的释放 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #839496;} Ja ...
- 深入浅出Java并发中的CountDownLatch
1. CountDownLatch 正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行.在Java并发中 ...
- java并发中ExecutorService的使用
文章目录 创建ExecutorService 为ExecutorService分配Tasks 关闭ExecutorService Future ScheduledExecutorService Exe ...
- 深刻理解JAVA并发中的有序性问题和解决之道
欢迎关注专栏[JAVA并发] 更多技术干活尽在个人公众号--JAVA旭阳 问题 Java并发情况下总是会遇到各种意向不到的问题,比如下面的代码: int num = 0; boolean ready ...
- java并发编程:锁的相关概念介绍
理解同步,最好先把java中锁相关的概念弄清楚,有助于我们更好的去理解.学习同步.java语言中与锁有关的几个概念主要是:可重入锁.读写锁.可中断锁.公平锁 一.可重入锁 synchronized和R ...
- java并发中CountDownLatch的使用
文章目录 主线程等待子线程全都结束之后再开始运行 等待所有线程都准备好再一起执行 停止CountdownLatch的await java并发中CountDownLatch的使用 在java并发中,控制 ...
- Java多线程与并发模型之锁
这是一篇总结Java多线程开发的长文.文章是从Java创建之初就存在的synchronized关键字引入,对Java多线程和并发模型进行了探讨.希望通过此篇内容的解读能帮助Java开发者更好的理清Ja ...
- Java并发编程-各种锁
安全性和活跃度通常相互牵制.我们使用锁来保证线程安全,但是滥用锁可能引起锁顺序死锁.类似地,我们使用线程池和信号量来约束资源的使用, 但是缺不能知晓哪些管辖范围内的活动可能形成的资源死锁.Java应用 ...
随机推荐
- Vue3 比 Vue2 快的体现-第一部分
Vue3 比 Vue2 快的原因 首先体现在 Diff算法的优化上, Vue2 中的 虚拟DOM对比采用全量对比策略,这样的话每次渲染也就把静态dom节点做对比了.在Vue3 中 Diff算法 优化了 ...
- Angular 18+ 高级教程 – Prettier, ESLint, Stylelint
前言 不熟悉 Prettier, ESLint, Stylelint 的朋友可以先看这篇 工具 – Prettier.ESLint.Stylelint. 首先,Angular 没有 built-in ...
- Azure 入门系列 (第一篇 Virtual Machine 和 SQL Server)
前言 终于有机会自己搞 Azure 了. 以前都是找代理做,近期代理 support 越来越弱了. 看来是 right time 自己搞了. 以前写过一些关于 Azure 的笔记: Azure key ...
- kali安装和升级
实验介绍: kali集成了世界上所有优秀的渗透测试工具 一:在VMware上安装 这里只详细介绍kali在VMware的安装,u盘和物理机上的安装不做详解 在kali官网下载kali镜像iso文件 下 ...
- 称骨算命免费api接口_json数据接口示例_八字称骨测算程序php接口
称骨算命是算命方法的一种,和生辰八字算命.紫微斗数算命异曲同工,略有不同,虽然都是用出生的时间算命,但比较而言,称骨算命将命运分的比较粗略,只是把命运分为五十一种.故对命运的考察不细致,不太准确,可以 ...
- /proc/slabinfo 介绍
slabinfo - version: 2.1 # name <active_objs> <num_objs> <objsize> <objperslab&g ...
- 墨天轮最受DBA欢迎的数据库技术文档-监控篇
好久不见,<墨天轮最受欢迎的技术文档>系列文章回归啦!本期主题数据库监控篇,希望能够帮助到大家!此外,为感谢大家支持,原文文末也给大家带来了返场福利,欢迎大家进入原文参与~ 数据库监控是许 ...
- dotnet 泛型委托 ACTION FUNC
void Main() { // 泛型委托 ACTION FUNC // 3. 创建委托实例 TestDele<string> testDele = new TestDele<str ...
- P3472 [POI2008]MAF-Mafia
P3472 [POI2008]MAF-Mafia 解法 不难发现,这个题目建图后出现的是一个基环树森林+一堆环,因为每个点仅有一条出边. 大概长这样: 对于最大,最小值,我们分开考虑. 最大值 可以看 ...
- 开源之夏 2023|欢迎报名 Apache RocketMQ 社区项目!
开源之夏是由中科院软件所"开源软件供应链点亮计划"发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬 ...