并发编程
并发编程
问题
可以直接调用 Thread 类的 run 方法吗?
- 可以,但是违背初衷
- run相当于直接调用Thread中的方法了,而不是新建一个线程,去让线程去自动执行这个任务
- 即运行run方法,会把一个方法加载进当前线程的栈中,然后执行,然后执行完之后再运行当前线程的下一行语句
- 例子
- 运行多一个run方法,只会顺序执行
for (int i = 0; i < 3; i++) {
new Thread(()->{
System.out.println("thread A");
}).run();
new Thread(()->{
System.out.println("thread B");
}).run();
}
thread A
thread B
thread A
thread B
thread A
thread B
- start(),新建一个线程,分配资源,然后让他自己执行自己的任务,
happens-before
- 定义
- happens-before是一套规则,
- 作用
- 用于针对编译器和处理器对于某些指令是否可以重排序
- 用于保证多线程间共享变量的可见性,或者说共享变量的同步
- 什么是可见性
- 变量被一个线程修改之后,其他线程能不能立刻看到修改后的值
更新: 2025-08-30 17:33:42
原文: https://www.yuque.com/duifangzhengzaishuru-rqbua/axyc58/rfrn11ugtg7meays