没有合适的资源?快使用搜索试试~ 我知道了~
Java多线程——线程八锁案例分析.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 68 浏览量
2022-06-21
22:12:21
上传
评论
收藏 28KB DOCX 举报
温馨提示
试读
15页
被synchronized修饰的方法,锁的对象是方法的调用者。因为两个方法的调用者是同一个,所以两个方法用的是同一个锁,先调用方法的先执行。
资源推荐
资源详情
资源评论
Java 多线程——线程八锁案例分析
Java 多线程——线程八锁案例分析
多线程的八个案例
通过分析代码,推测打印结果,并运行代码进行验证。
1)两个线程调用同一个对象的两个同步方法
代码如下:
1 public class Demo {
2 public static void main(String[] args) {
3 Number number = new Number();
4
5 new Thread(new Runnable() {
6 @Override
7 public void run() {
8 number.getOne();
9 }
10 }).start();
11
12 new Thread(new Runnable() {
13 @Override
14 public void run() {
15 number.getTwo();
16 }
17 }).start();
18 }
19 }
20
21 class Number {
22 public synchronized void getOne() {
23 System.out.println("one");
24 }
25
26 public synchronized void getTwo() {
27 System.out.println("two");
28 }
29 }
运行结果如下:
1 one
2 two
结果分析:
被 synchronized 修饰的方法,锁的对象是方法的调用者。因为两个方法的调用
者是同一个,所以两个方法用的是同一个锁,先调用方法的先执行。
2)新增 Thread.sleep()给某个方法
代码如下:
1 public class Demo {
2 public static void main(String[] args) {
3 Number number = new Number();
4
5 new Thread(new Runnable() {
6 @Override
7 public void run() {
8 number.getOne();
9 }
10 }).start();
11
12 new Thread(new Runnable() {
13 @Override
14 public void run() {
15 number.getTwo();
16 }
17 }).start();
18 }
19 }
20
21 class Number {
22 public synchronized void getOne() {
23 try {
24 Thread.sleep(1000);
25 } catch (InterruptedException e) {
26 e.printStackTrace();
27 }
28 System.out.println("one");
29 }
30
31 public synchronized void getTwo() {
32 System.out.println("two");
33 }
34 }
剩余14页未读,继续阅读
资源评论
小兔子平安
- 粉丝: 209
- 资源: 1940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功