Java 多线程学习笔记之synchronized
来源:互联网 发布:淘宝质量鉴定什么意思 编辑:程序博客网 时间:2024/06/05 20:21
当学到马士兵老师Java教程的以下代码时,我在想为什么会是这个结果?
public class TT implements Runnable {
int b = 100;
public synchronized void m1() throws Exception{
//Thread.sleep(2000);
b = 1000;
Thread.sleep(5000);
System.out.println("b = " + b);
}
public synchronized void m2() throws Exception {
Thread.sleep(2500);
b = 2000;
}
public void run() {
try {
m1();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
TT tt = new TT();
Thread t = new Thread(tt);
t.start();
tt.m2();
System.out.println(tt.b);
}
}
int b = 100;
public synchronized void m1() throws Exception{
//Thread.sleep(2000);
b = 1000;
Thread.sleep(5000);
System.out.println("b = " + b);
}
public synchronized void m2() throws Exception {
Thread.sleep(2500);
b = 2000;
}
public void run() {
try {
m1();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
TT tt = new TT();
Thread t = new Thread(tt);
t.start();
tt.m2();
System.out.println(tt.b);
}
}
明明有两个synchronized,再加上main,为什么main函数作为主线程却在等待public synchronized void m2()函数执行完后再执行
System.out.println(tt.b);synchronized特性是什么?
想了一下午,逐渐理清了思路,尝试把心得写下来:
其实tt.m2()是mian()线程中的一部分所以m2()函数执行完后再执行System.out.println(tt.b)。在整个程序中只有两个线程:main与t,即只有m1()在其他线程运行着。我是看到synchronized就下意识的以为tt.m2()是单独的一个线程。我有些粗心了。
synchronized总结(转自http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html)
0 0
- Java 多线程学习笔记之synchronized
- Java多线程之synchronized
- Java多线程之synchronized
- java多线程之synchronized
- java多线程之synchronized
- Java多线程之synchronized
- JAVA并发编程学习笔记之synchronized
- JAVA并发编程学习笔记之synchronized
- JAVA并发编程学习笔记之synchronized
- JAVA并发编程学习笔记之synchronized
- JAVA并发编程学习笔记之synchronized
- java多线程学习笔记——synchronized关键字
- JAVA学习笔记--多线程(三)synchronized实现线程同步
- Java 多线程学习笔记(五)synchronized 锁重入
- Java synchronized 学习笔记
- java 多线程编程学习Synchronized
- JAVA多线程学习-synchronized辨析
- java多线程学习之通过synchronized加锁解决线程安全问题
- 寻迹小车代码
- 二叉树的创建,递归和非递归遍历
- 聊聊java高并发系统之异步非阻塞
- CentOS设置开机等待时间
- 实例详解机器学习如何解决问题
- Java 多线程学习笔记之synchronized
- 零死角玩转stm32-高级篇之SDIO(4bit + DMA、支持SDHC、带协议分析)
- 《Java编程思想第四版》笔记---14章 附:Java 类加载器
- 数据库 Oracle记录安全事件日志
- 通过过滤器实现控制动态资源不要缓存
- LeetCode 15. 3sum
- JavaScript获取时间并输出
- Java接口与数据回收使用
- didi uber大战