=-=b又让我想起了以前操作系统的线程
-- 进程是执行中的一段程序,而一个进程中执行中的每个任务即为一个线程
-- 一个线程只可以属于一个进程,但一个进程能包含多个线程
-- 线程无地址空间,它包括在进程的地址空间里
线程和线程可以有依赖关系也可以没有,一个线程挂了不会影响另一个线程。主线程开启子线程,主线程挂了,子线程不一定会挂。
Thread实现了Runnable接口
一个类继承了Thread可以用这个类的实例化对象开启一个线程。这个类必须重写run方法
package com.leehl.thread; public class MyThread3 { public static void main(String[] args) { System.out.println(Thread.currentThread().getName());//main线程 Menglei a = new Menglei(); a.start(); } } class Menglei extends Thread{ int time; @Override public void run() { while (true) { try { Menglei.sleep(1000); //可以使用Thread的Thread.currentThread().getName()方法获得线程名 System.out.println("梦泪老师说扣1送地狱火"+(++time)+"线程名:"+Thread.currentThread().getName()); } catch (InterruptedException e) { e.printStackTrace(); } if(time==8){ break; } } } }
如果是a.run()那么程序会串行化执行,进程也都是main线程。
当执行start方法后,会在start中执行执行start0方法,start0方法底层是由JVM底层调用native方法,C/C++实现的
所以真正实现多线程效果的是start0()方法。
而start0()方法只是把这个线程变成了可运行状态,最终还是要看CPU的的调度算法,什么时候调用
public synchronized void start() {
start0();
}
start执行start方法后:
当一个类已经继承了一个父类后,没法继承Thread,我们可以实现Runnable接口来实现线性
标签:__,Java,Thread,start0,start,线程,public From: https://www.cnblogs.com/leehl8016/p/16830475.html