多线程
一、 概念理解
进程:是一个正在进行中的程序 如:任务管理器--进程 里面展示的
每一个进程执行都有一个执行循序,该顺序是一个执行路径,或者叫一个控制单元。
线程:线程是程序中一个独立的控制单元。线程控制着进程的执行。
线程是进程中的内容,每个进程至少有一个线程。
Java VM 启动时会有一个进程java.exe 该线程中至少有一个线程负责java程序的执行,该线程运行代码存在于main方法中。该线程称为主线程。
扩展:其实更细节说明jvm ,jvm启动时不止一个线程,还有负责垃圾回收机制的线程。
二、 多线程的存在意义
让程序多部分的代码产生同时运行的效果,附加的还能提高程序的效率。
三、线程的创建(查 API java.lang.thread)
类 Thread
1. 如何在自定义代码中,自定义一个线程?
Java API中已经提供了对线程这类事物的描述 ,用Thread类。
创建线程的第一种方式:继承Thread类。
步骤:
1.创建一个类继承Thread
2.重写Thread类中的run方法
3.调用线程的start方法。
作用:一是启动一个线程,二是调用run方法
演示1
public class ThreadTest {
public static void main(String[] args) {
Demo d = new Demo();//new一个对象,就建好了一个线程
d.start();
}
}
class Demo extends Thread{
public void run(){
System.out.println("demo run");
}
}
演示2
public class ThreadTest {
public static void main(String[] args) {
Demo d = new Demo();//new一个对象,就建好了一个线程
for(int i=0;i<60;i++){
System.out.println("demo run---"+i);
}
}
}
class Demo extends Thread{
public void run(){
//System.out.println("demo run");
for(int i=0;i<60;i++){
System.out.println("demo run---"+i);
}
}
}
明确一点,在某一时刻,只能有一个程序在运行(多核除外),CPU在做着快速的切换,以达到看上去是同时运行的效果。
可以形象的把多线程运行行为在互相抢夺CPU的执行权。
这就是多线程的一个特性:随机性,谁抢到谁执行,至于执行多久,由CPU决定。
思考:为什么要覆盖run方法?
Thread类用于描述线程,该类定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法。即run方法用于存储线程要运行的代码。
注意!!
若上述程序不是用的d.start(); 而是d.run的话则会先执行run方法的类容,执行完后才会执行main里面的代码,因为直接用d.run是把这个方法加到主线程中来了,只有一个线程。 |
|