自学内容网 自学内容网

JavaSE

线程

1. 区分程序、进程、线程

程序:为实现某种功能,使用计算机语言编写的一系列指令的集合。
进程:是运行中的程序(如运行中的原神)进程是操作系统进行资源分配的最小单位。
线程:进程可以进一步细化为线程,是进程中一个最小的执行单元,是cpu进行调度的最小单元

进程和线程的关系:
⑴ 一个进程中可以包含多个线程 (一个QQ程序可以有多个聊天窗口)
⑵ 一个线程只能隶属于一个进程 (QQ的聊天窗口只能属于QQ进程)
⑶ 每一个进程至少包含一个线程,也就是我们的主线程(像java中的main方法就是来启动主线程的)在主线程中可以创建并启动其他线程.
⑷ 一个进程的线程共享该进程的内存资源.

2. 创建线程

  1. 通过继承Thread来创建线程
    写一个类继承java.lang.Thread
    重写run( )
    线程中要执行的任务都要写在run( )中,或在run( )中进行调用.
public class Demo1 extends Thread{//继承Thread类
    @Override
    public void run() {//重写run方法
        for (int i = 1; i <= 200; i++) {
            System.out.println("run"+i);
        }
    }
}
 public static void main(String[] args) {
        //创建线程
        Demo1 demo1 = new Demo1();
        //启动线程
        demo1.start();
        for (int i = 1; i <= 200; i++) {
            System.out.println("main"+i);
        }
    }

启动线程调用的是start() ; 不是run()
run()这不是启动线程,只是一个方法调用,没有启动线程,还是单线程模式的。

  1. 通过实现Runnable接口来创建线程
    1. 创建任务,只先创建线程要执行的任务,创建一个类,实现Runnable接口.
    2. 重写任务执行的Run()
    3. 创建线程,并为线程指定执行任务.
public class Demo2 implements Runnable {//实现Runnable接口
    @Override
    public void run() {//重写run方法
        for (int i = 0; i < 200; i++) {
            System.out.println("自定义线程");
        }
    }
}
public static void main(String[] args) {
        //创建任务
        Demo2 demo2 = new Demo2();
        //创建线程,并指定执行任务
        Thread thread = new Thread(demo2);
        thread.start();
    }

3. Thread类中的方法

run() 用来定义线程要执行的任务代码.
start() 启动线程
currentThread() 获取到当前线程(.得到具体信息)
setName() 为线程设置名字
getState() 获取状态
getPriority() setPriority 获取/设置 优先级
sleep() 让当前线程休眠指定时间.
join() 等待当前线程执行完毕,其他线程再执行.
yield() 主动礼让,退出cpu重新回到等待序列.


原文地址:https://blog.csdn.net/m0_73444474/article/details/142906275

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!