Java--多线程

Harper886’s Blog / 2023-05-13 / 原文

Java--多线程

进程

image-20230513091501132

线程

image-20230513091842468

多线程的实现方式

方法1:继承Thread类

  1. 定义一个类继承Thread方法
  2. 再该类中重写run()方法
  3. 创建该类的对象
  4. 启动线程

image-20230513092730780

代码示例

public class demo extends Thread{//继承Thread方法

    @Override
    public void run() {//重写run方法,把代码片断放入其中
        for (int i = 0; i < 100; i++) {
            System.out.println(i);
        }
    }
}

Main方法

public class Main {
    public static void main(String[] args) {
        demo one = new demo();//
        demo two = new demo();//创建两个该类的对对象
//        one.run();
//        two.run();//如果直接调用run方法就和普通方法的调用一样,没有多线程
        one.start();//必须使用start方法调用才能启动多线程
        two.start();
    }
}

设置和获取线程名称

  1. 使用setName方法来修改线程名称
  2. 使用getName方法来返回该线程名称
  3. 还可以通过构造方法来设置线程名称(注意需要重写子类中的构造方法)

image-20230513094914956

示例代码

Demo

public class Demo extends Thread{//继承Thread方法

    public Demo(){

    }
    public Demo(String name)//重写子类构造方法
    {
        super(name);//调用父类构造函数
    }
    @Override
    public void run() {//重写run方法,把代码片断放入其中
        for (int i = 0; i < 100; i++) {
            System.out.println(getName()+":"+i);//获取线程名称

        }
    }
}

Main方法

public class Main {
    public static void main(String[] args) {
        Demo one = new Demo("线1");//
        Demo two = new Demo("线2");//创建两个该类的对对象
        //不设置线程名称默认为Thread-0,1,2
//线程名称只能设置一次?
        one.start();//必须使用start方法调用才能启动多线程
        two.start();
//        one.setName("线程1");//使用set方法设置线程名称
//        two.setName("线程2");//设置线程名称
//        one.start();//必须使用start方法调用才能启动多线程
//        two.start();
    }
}