并发编程

并发编程

问题

可以直接调用 Thread 类的 run 方法吗?

  • 可以,但是违背初衷
  1. run相当于直接调用Thread中的方法了,而不是新建一个线程,去让线程去自动执行这个任务
    1. 即运行run方法,会把一个方法加载进当前线程的栈中,然后执行,然后执行完之后再运行当前线程的下一行语句
    2. 例子
      1. 运行多一个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
  1. start(),新建一个线程,分配资源,然后让他自己执行自己的任务,

happens-before

  1. 定义
    1. happens-before是一套规则,
    2. 作用
      1. 用于针对编译器和处理器对于某些指令是否可以重排序
      2. 用于保证多线程间共享变量的可见性,或者说共享变量的同步
    3. 什么是可见性
      1. 变量被一个线程修改之后,其他线程能不能立刻看到修改后的值

更新: 2025-08-30 17:33:42
原文: https://www.yuque.com/duifangzhengzaishuru-rqbua/axyc58/rfrn11ugtg7meays