java多线程包括创建线程,启动线程,控制线程,以及线程同步,以及利用java内建支持的线程池来提高多线程性能。
进程具有
独立性:是系统中独立存在的实体,拥有自己独立的资源,有自己的私有地址空间。
动态性:程序一旦进入内存,就变成一个进程,因此进程是系统中活动的指令集合,加入了时间的概念,进程有自己的生命周期和各种不同的状态。这在程序中是不具备的。
并发性:多个进程可以在单个处理器上并发执行,不会互相影响。
并发和并行的区别:并行是指同一时刻,剁掉指令在多个处理器上同时执行。并发是指同一时刻只有一条指令执行,但过个进程指令被快速轮换执行,在宏观上具有多个进程同时执行的效果。
线程是进程的执行单元,一个进程初始化后,主线程就被创建。线程可以由自己的堆栈,程序计数器,和局部变量。但没有系统资源。多个线程共享父进程的资源。
一个进程中线程可以并发执行,抢占式执行。
操作系统可以同时执行多个任务,每个任务就是进程。进程可以同时执行多个任务,每个任务就是线程。
线程的创建和启动
所有线程对象必须是Thread类或者子类的实例,线程的执行体代表线程的任务(一段程序流即一段顺序执行的代码)
1.定义Thread类的子类,并重写run方法,run方法就是线程执行体
2.创建Thread子类的实例,即创建了线程对象
3.调用线程对象的start方法启动多线程。
用继承Thread类的方法创建的线程,多个线程之间无法共享线程类的实例变量。
public class createByThread extends Thread{ private int i; public void run(){ for(;i<100;i++){ System.out.println(getName()+" "+i); } } public static void main(String[] args) { for(var i=0;i<100;i++){ System.out.println(Thread.currentThread().getName()+" "+i); if(i==20){ Thread th1=new createByThread(); th1.setName("线程NO1"); th1.start(); new createByThread().start(); } } } } 线程NO1 0 线程NO1 1 线程NO1 2 线程NO1 3 线程NO1 4 Thread-1 0 线程NO1 5 Thread-1 1 线程NO1 6 Thread-1 2 线程NO1 7 Thread-1 3 线程NO1 8
程序结果显示,两个线程各自有自己的私有成员变量i
实现Runnable接口创建线程类
1.定义Runnable接口的实现类,并重写接口的run方法,该run方法时该线程的执行体
2.创建实现类的实例,作为target
3创建Thread的实例,并用target做构造器的参数。
4调用线程对象的start()方法。
原文:https://www.cnblogs.com/tomato190/p/12485837.html