2.2.6对象锁synchronized(this)锁定的是当前对象
来源:互联网 发布:java resultset 行数 编辑:程序博客网 时间:2024/05/18 01:09
package cha02.execise16;/** * Created by sunyifeng on 17/9/25. */public class Task { // 短任务 public void doShortTimeTask() { System.out.println("---运行短任务---"); } // 长任务 public void doLongTimeTask() { synchronized (this) { for (int i = 0; i < 200; i++) { System.out.println("长任务的线程名称:" + Thread.currentThread().getName() + ",i=" + (i + 1)); } } }}
package cha02.execise16;/** * Created by sunyifeng on 17/9/25. */public class MyThread1 extends Thread { private Task task; public MyThread1(Task task){ super(); this.task = task; } @Override public void run(){ super.run(); task.doLongTimeTask(); }}
package cha02.execise16;/** * Created by sunyifeng on 17/9/25. */public class MyThread2 extends Thread { private Task task; public MyThread2(Task task){ super(); this.task = task; } @Override public void run(){ super.run(); task.doShortTimeTask(); }}
package cha02.execise16;/** * Created by sunyifeng on 17/9/25. */public class Run { public static void main(String[] args) throws InterruptedException { Task task = new Task(); // 线程1,执行长任务 MyThread1 myThread1 = new MyThread1(task); myThread1.start(); Thread.sleep(1); // 线程2,执行短任务 MyThread2 myThread2 = new MyThread2(task); myThread2.start(); }}
运行结果:长任务的线程名称:Thread-0,i=60
长任务的线程名称:Thread-0,i=61
长任务的线程名称:Thread-0,i=62
---运行短任务---
长任务的线程名称:Thread-0,i=63
长任务的线程名称:Thread-0,i=64
长任务的线程名称:Thread-0,i=65
长任务的线程名称:Thread-0,i=66
程序分析:
两个线程的执行时异步的。短任务改成同步的方法。
// 短任务synchronized public void doShortTimeTask() { System.out.println("---运行短任务---");}
运行结果:长任务的线程名称:Thread-0,i=200
---运行短任务---
程序分析:
两个方法的同步锁,锁定的是同一个对象。
阅读全文
0 0
- 2.2.6对象锁synchronized(this)锁定的是当前对象
- 多线程之synchronized(this)锁定当前对象
- 从头认识多线程-2.12 synchronized标记的方法和synchronized(this)标记的代码块锁定的是当前对象
- 2.2.7锁定非this对象synchronized(this)
- 2.2.5一个对象不同的方法synchronized (this)是同一个对象锁
- 线程锁synchronized (this)锁住的是对象还是方法
- java的synchronized(参数),参数是this对象和参数是非this对象的区别
- java 使用synchronized关键字锁定的对象
- this是指当前对象自己
- $this关键字是用来访问当前对象中的对象属性和对象方法的系统变量
- 锁对象Lock 比使用synchronized 方法和语句可获得的更广泛的锁定操作
- this表示当前对象
- JAVA this 当前对象
- synchronized详解-锁的是对象还是代码?
- synchronized锁住的是代码还是对象
- synchronized锁住的是代码还是对象
- synchronized锁住的是代码还是对象
- synchronized锁方法,synchronized锁对象,synchronized(this),synchronized(class)最佳理解方式
- c#读取Excel
- SVN 配置,应用
- 如何解决虚拟机频繁分离和附加磁盘导致的识别错误
- 一个高性能、轻量级的分布式内存队列系统--beanstalk
- layer弹出层关闭后刷新父页面
- 2.2.6对象锁synchronized(this)锁定的是当前对象
- 代码走查
- 网页实现 在线咨询(联系客服)
- Echart常见使用问题总结(个人笔记)
- 封装getByClass(JS获取class的方法封装为一个函数)
- Gradle系列第(三)篇---Android Studio与Gradle那些事儿
- 【安全牛学习笔记】中间人攻击、ARP MITM、中间人攻击、Pass the Hash
- [POJ]3017 单调队列 + set
- txt文件导入mysql