Java多线程编程基础 2 -- 内存分配·执行线程vs当前线程·run方法·Runnable接口

线程的内存空间分配

  • Java虚拟机会为每个线程分配调用栈所需的内存空间
    调用栈 call stack -- 用于跟踪Java代码间的调用关系以及Java代码对native code的调用
  • Java平台中的每个线程可能还有一个内核线程(与具体操作系统有关)与之对应

结论: 创建线程对象比创建其他类型的对象成本要高

执行线程 · 当前线程

Java平台中的任意一段代码总是由确定的线程负责执行的 --> 执行线程
同一段代码可以被多个线程执行,通过调用Thread.currentThread()可以获取这段代码的执行线程 --> 当前线程

run方法直接调用

Java语言并不阻止我们直接调用run方法,但这样做有违创建线程的初衷。如果我们没有启动线程而是在应用代码中直接调用线程的run方法的话,那么这个线程的run方法其实运行在当前线程之中而不是运行在其自身线程之中。

Runnable接口

Thread类实际上是Runnable接口的一个实现类

//Thread.run()源码,实例变量target的类型为Runnable
public void run() {
    if (target != null) {
        target.run();
    }
}

参考资料
Java多线程编程实战指南(核心篇)- 黄文海 / 著

你可能感兴趣的:(Java多线程编程基础 2 -- 内存分配·执行线程vs当前线程·run方法·Runnable接口)