多线程基础知识
线程与进程的区别 1. 进程是资源分配的最小单元,线程是CPU调度的最小单元。所有与进程相关的资源,均被记录再PCB中。 2. 线程隶属于某一个进程,共享所有进程的资源。线程只由堆栈寄存器、程序计数器和TCB构成。 3. 进程可以看作独立的应用,线程不能看作独立的应用。 4. 进程有独立的地址空间,相互不影响,而线程只是进程的不同执行路径,如果线程挂了,进程也就挂了。所以多进程的程序比多线程程序健壮,但是切换消耗资源多。 Java中进程与线程的关系 1. 运行一个程序会产生一个进程,进程至少包含一个线程。 2. 每个进程对应一个JVM实例,多线线程共享JVM中的堆。 3. Java采用单线程编程模型,程序会自动创建主线程。 4. 主线程可以创建子线程,原则上要后于子线程完成执行。 线程中start方法和run方法的区别 Java中创建线程的方式有两种,不管使用继承Thread的方法是hiRunnable接口的方法,都需要重写run方法。调用start方法会创建一个新的线程并启动,run方法只是启动线程后的回调函数,如果调用run方法,那么执行run方法的线程不会是新创建的线程,而如果使用start方法,那么执行run方法的线程就是我们刚刚启动的那个线程。 public class Main { public static void main