Java多线程_创建线程的多种方式
一、线程与进程
几乎所有的操作系统都支持进程的概念,所有运行中的任务都对应一个进程(Process)。当一个程序进入内存运行时,即变成一个进程。进程是处于运行中的程序,并且具有一定的独立功能,进程是系统进行资源调度的一个独立单位。
一般而言,进程包含三个特征:独立性、动态性、并发性。
一个程序运行后至少会有一个进程,一个进程可以包含多个线程,但至少要有个线程。
归纳起来就是说:操作系统可以同时执行多个任务,每个任务就是进程;进程可以同时执行多个任务,每个任务就是线程。
温馨提示(并发性与并行性):
并发性(concurrency)和并行性(parallel)是两个概念,并行是指在同一时刻,有多条指令在多个处理器上同时执行;并发是指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程被同时执行的效果。
二、多线程的优势
线程在程序中是独立的、并发的执行流,与分隔的进程相比,线程分隔程度要小很多。当操作系统创建一个进程时,必须为该进程分配独立的内存空间,并分配大量的相关资源;但创建线程则简单很多,因此使用多线程来实现并发比使用多进程实现并发要强很多。
1、进程之间不能共享内存,但线程之间共享内存非常容易,
2、系统创建进程时需要为该进程重新分配系统资源,但创建线程则代价要小很多,因此使用多线程实现多任务并发要比进程效率高很多。
3、Java语言内置了多线程功能支持,而不是单纯的作为底层操作系统的调度模式,从而简化了Java的多线程编程。
三、线程的创建和启动
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例,以下则介绍其中三种常见创建线程对象的方法。
1、继承Thread类创建线程类
创建步骤:
①定义Thread类的子类,并重写该类的run()方法,该run()方法体就代表了线程需要完成的任务。因此吧run()方法称为线程执行体。
②创建Thread子类的实例,即创建了线程对象。
③调用线程对象的start()方法来启动该线程。
/**
* @program: code
* @description: 通过继承Thread类创建线程对象
* @create: 2022-02-28 20:29
**/
public class Thread_jc extends Thread {
private int i;
//重写run()方法,ru