欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

J-基础-线程-线程创建与使用

程序员文章站 2022-03-21 08:04:55
创建多线程方式1:1.创建Thread类的子类*java。lang。Thread类:是描述线程的类,要实现多线程,必须继承Thread*步骤:1.创建一个Thread类的子类2.子类重写ruan方法,run方法中设置任务3.new Thread类的子类对象4.调用Thread的start方法,开启线程,执行run创建多线程方式2:*步骤:1.声明实现Ruanable接口的类2.实现run方法,分配任务3.创建实例4.创建Thread时将实例作为参数传入并启用。*注:1.开启多线....

J-基础-线程-线程创建与使用
创建多线程方式1:
1.创建Thread类的子类
*java。lang。Thread类:是描述线程的类,要实现多线程,必须继承Thread
*步骤:
1.创建一个Thread类的子类
2.子类重写ruan方法,run方法中设置任务
3.new Thread类的子类对象
4.调用Thread的start方法,开启线程,执行run
创建多线程方式2:
*步骤:
1.声明实现Ruanable接口的类
2.实现run方法,分配任务
3.创建实例
4.创建Thread时将实例作为参数传入并启用。
*注:1.开启多线程,多线程之间是并发执行
2.多次开启同一线程非法,报错
3.java是抢占调度,采用最高优先级调度,哪个线程优先级高调用那个,相同时需要抢占调度

主方法:


/*
    创建多线程方式1:
        1.创建Thread类的子类
            *java。lang。Thread类:是描述线程的类,要实现多线程,必须继承Thread
            *步骤:
                1.创建一个Thread类的子类
                2.子类重写ruan方法,run方法中设置任务
                3.new Thread类的子类对象
                4.调用Thread的start方法,开启线程,执行run
    创建多线程方式2:
        *步骤:
            1.声明实现Ruanable接口的类
            2.实现run方法,分配任务
            3.创建实例
            4.创建Thread时将实例作为参数传入并启用。
    *注:1.开启多线程,多线程之间是并发执行
        2.多次开启同一线程非法,报错
        3.java是抢占调度,采用最高优先级调度,哪个线程优先级高调用那个,相同时需要抢占调度
*/

public class MainThread {

    public static void main(String[] args) {

//第一种创建多线程方法
        //3.创建Thread类的子类对象
        MainThreadRun mtr = new MainThreadRun();
        //4.调用Thread的start方法,开启线程,执行run
        mtr.start();

//第二种创建多线程方法
        //3.创建实例
        MainThreadRun2 mtr2 = new MainThreadRun2();
        //4.创建Thread时将实例作为参数传入并启用。
        new Thread(mtr2).start();

        for (int i = 0; i < 9000; i++) {
            System.out.println("main执行"+i);
        }


    }

}

方法1类:

/*
第一种方法:
    MianThread的调用,
    继承父类Thread
 */
public class MainThreadRun extends Thread{

    //重写run,线程调用,设置线程任务
    //多线程调用方法1
    @Override
    public void run() {
        for (int i = 0; i < 200; i++) {
            System.out.println("方法1线程调用"+i);
        }
    }
}

方法2类:


/*
第二种方法:
    ianThread的调用,
  实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。
 */
public class MainThreadRun2 implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 9000; i++) {
            System.out.println("第二种线程调用"+i);
        }
    }
}

程序执行结果:
J-基础-线程-线程创建与使用
J-基础-线程-线程创建与使用
两只实现方式区别:
如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。
Rannable接口创建多线程程序的好处:
(1)避免了单继承的局限性。
新建类继承Thread类后不能继承其他类,而先建实现类在实现了Rannable接口同时还可以还可以实现其它接口。
(2)增强了程序可扩展性,达到了解耦。
实现Rannable接口的方式,把设置线程任务和开启线程任务进行分离。
实现类中重写run()方法,设置任务。主方法中创建Thread类对象,调用start方法,用来开启线程。

原理分析:
程序执行原理:
J-基础-线程-线程创建与使用
多线程分析:
J-基础-线程-线程创建与使用
链接1:
为什么要调用start而不是run

本文地址:https://blog.csdn.net/qq_40811542/article/details/112866279