1.概念:线程与进程
1.1什么是进程
狭义上: 进程是正在运行的程序的实例。
广义上: 进程是一个具有一定独立功能的程序,关于莫个数据集合的一次运行活动。是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
1.2什么是线程
线程是操作系统能够进行运算调试的最小单位。它被包含在进程中,是进程中的实际动作单位。一个线程指的是进程中的一个单一顺序的控制流,一个进程中可以并发多个线程,每个线程执行不同的任务。
2 使用java创建多线程
2.1 继承thread实现多线程
步骤: 通过继承thread类 在重写thread类的run方法(业务代码就写在run方法内) 在实例化创建好的线程类,然后调用实例化好的对象的start方法即可启动线程。(代码如下)
public class Demo01 {
public static void main(String[] args) throws InterruptedException {
Thread t=new Demo01thread();//实例化线程
t.start();//启动线程
System.out.println("main方法");
}
}
class Demo01thread extends Thread{
@Override
public void run() {
//业务代码一般都写在run方法中
System.out.println("线程启动");
}
}
2.2 通过实现Runnable接口 实现多线程
步骤: 创建一个类,这个类需要实现Runnable接口 ,重写Runnable接口的run方法,实列化创建这个类,实列化一个Thread对象,并将实例好的Runnable 对象通过Thread的构造方法进行传递 。最后调用Thread对象的start方法,创建线程。(代码如下)
public class Demo02 {
public static void main(String[] args) {
Runnable r=new Demo02Thread();//实例Runnable类
Thread t=new Thread(r);//通过Runnable类实现线程
t.start();//启动线程
System.out.println(Thread.currentThread().getName()+": 运行main");
}
}
class Demo02Thread implements Runnable{//通过实现Runnable类来实现线程
public void run() {
System.out.println(Thread.currentThread().getName()+": 线程启动");
}
}
3 两种创建线程方式的比较
通过继承Thread类 实现多线程的方式,要明白一个java类只能继承一个父类,
也就是说线程类在继承了Thread类后就没有办法再继承其他类了。
而通过实现Runnable接口实现多线程,由于一个java类可以实现多个接口,
所以从莫种方式来说 Runnable实现多线程是对Thread类实现的扩展。