java 多线程的概念和启动线程的方法——继承Thread类

java有多线程的特点,所谓线程是就是线程的一部分,是程序调度和执行的单位,类似于当我们看视频时,声音、图像都是线程,通过多线程我们就可以同时欣赏有图有声音的视频了。
真正的多线程就是多核CPU处理任务,大部分的多线程是模拟的,类似于一条道路分成了好几部分,可以允许多辆车在这条路上行驶。
多线程就是开辟多条路径同时执行。每个线程有自己独立的工作内存,通过工作内存再与主存打交道。需要注意的是多个线程同时运行会出现资源抢夺的问题。这是我们在后面需要考虑的地方。
创建线程的方法:
1,继承Thread类,重写run()方法。
2.实现Runnable接口,实现run()方法
3.实现Callable接口(不常用)
方法run( )称为线程体。
本篇着重讲方法1:
一个类继承Thread类通过其一个实例调用start()方法使线程可以被分配和启动。
class TestThread extends Thread {
public void run() {
// 重写内容 . . .

     }
 }
 利用以下方法来调用线程:

TestThread p = new TestThread();
p.start();

start()方法是将线程交给CPU处理,让CPU负责调度。
这个地方注意的是start()方法是启动线程,并不一定会使这个线程被优先执行。我们看一个例子:

java 多线程的概念和启动线程的方法——继承Thread类它会出现这个情况:
java 多线程的概念和启动线程的方法——继承Thread类
main方法作为主线程中的语句并不一定是被优先执行的,这是因为你开辟了两个线程,他们一起执行,不存在先后顺序,只是说main()作为主线程中的语句被CPU调度的可能大一些。但是如果调用run()方法就不同了:
java 多线程的概念和启动线程的方法——继承Thread类
java 多线程的概念和启动线程的方法——继承Thread类
run()方法是并没有使用多线程,是在一个线程中先执行完run()方法后在执行main方法的语句。这样的话就有先后顺序了。