美文网首页程序员地瓜哥的小屋
Java中的线程创建和启动

Java中的线程创建和启动

作者: CodingDGSun | 来源:发表于2021-07-04 11:58 被阅读0次

Java使用Thread类代表线程,所有的线程对象都必须是Thread类或者其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码)。Java使用线程执行体来代表这段程序流。


继承Thread类创建线程类

通过继承Thread类来创建并启动多线程的步骤如下:

  • 定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务。因此把run()方法称为线程执行体。
  • 创建Thread子类的实例,即创建了线程对象。
  • 调用线程对象的start()方法来启动该线程。
public class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 1; i <= 5; i++) {
            //返回当前线程的名字
            System.out.println(Thread.currentThread().getName() + " " + i);
        }
    }

    public static void main(String[] args) {
        for (int i = 1; i <= 6; i++) {
            //获取当前线程的名字
            System.out.println(Thread.currentThread().getName() + " " + i);
            if (i == 3) {
                //创建第一个线程
                MyThread thread1 = new MyThread();
                //启动第一个线程
                thread1.start();

                //创建第二个线程
                MyThread thread2 = new MyThread();
                //启动第二个线程
                thread2.start();
            }
        }
    }
}

/*
    //输出结果:
    main 1
    main 2
    main 3
    main 4
    main 5
    main 6
    Thread-1 1
    Thread-0 1
    Thread-1 2
    Thread-0 2
    Thread-1 3
    Thread-0 3
    Thread-1 4
    Thread-0 4
    Thread-1 5
    Thread-0 5
 */

 //或者

 /*
    //输出结果:
    main 1
    main 2
    main 3
    main 4
    main 5
    main 6
    Thread-0 1
    Thread-1 1
    Thread-0 2
    Thread-1 2
    Thread-0 3
    Thread-1 3
    Thread-0 4
    Thread-1 4
    Thread-0 5
    Thread-1 5
*/

其中,第一个线程和第二个线程的执行顺序,每次运行先后顺序可能不一定相同,得根据虚拟机的线程调度器的调度。

实现Runnable接口创建线程类

实现Runnable接口来创建并启动多线程的步骤如下:

  • 定义Runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。
  • 创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。
public class MyThread implements Runnable {
    @Override
    public void run() {
        for (int i = 1; i <= 5; i++) {
            //返回当前线程的名字
            System.out.println(Thread.currentThread().getName() + " " + i);
        }
    }

    public static void main(String[] args) {
        for (int i = 1; i <= 6; i++) {
            //获取当前线程的名字
            System.out.println(Thread.currentThread().getName() + " " + i);
            if (i == 3) {
                //创建Runnable的实例:MyThread
                MyThread myThread = new MyThread();

                //创建第一个线程,并将Runnable的实例:MyThread,作为Thread的target来创建Thread对象
                Thread thread1 = new Thread(myThread, "第一个线程");
                //启动第一个线程
                thread1.start();

                //创建第二个线程
                Thread thread2 = new Thread(myThread, "第二个线程");
                //启动第二个线程
                thread2.start();
            }
        }
    }
}

 /*
    //输出结果:
    main 1
    main 2
    main 3
    main 4
    main 5
    main 6
    第一个线程 1
    第二个线程 1
    第一个线程 2
    第二个线程 2
    第一个线程 3
    第二个线程 3
    第一个线程 4
    第二个线程 4
    第一个线程 5
    第二个线程 5
*/

//或者

/*
    //输出结果:
    main 1
    main 2
    main 3
    main 4
    main 5
    main 6
    第二个线程 1
    第一个线程 1
    第二个线程 2
    第一个线程 2
    第二个线程 3
    第一个线程 3
    第二个线程 4
    第一个线程 4
    第二个线程 5
    第一个线程 5
*/
其中,第一个线程和第二个线程的执行顺序,每次运行先后顺序可能不一定相同,得根据虚拟机的线程调度器的调度。

相关文章

  • 三. Java并发基础知识

    创建和启动Java线程 Java线程也是一个对象,与任何其他Java对象一样。线程是类 java.lang.Thr...

  • 【多线程】NSThread

    1️⃣创建和启动线程简单说明 一个NSThread对象就代表一条线程 创建、启动线程 主线程相关用法 其他用法 创...

  • Java中的线程创建和启动

    Java使用Thread类代表线程,所有的线程对象都必须是Thread类或者其子类的实例。每个线程的作用是完成一定...

  • 线程的创建和启动方式

    线程的创建和启动方式   Java使用Thread代表线程,所有的线程对象都必须是Thread类或其子类的实例。每...

  • 多线程 ---- NSThread和线程安全

    创建和启动线程 一个NSThread对象就代表一条线程 主线程相关方法 其他方法 获得当前线程 线程的名字 其他创...

  • iOS 多线程--NSThread

    一、创建和启动线程 一个 NSThread 对象代表一条线程。 创建和启动线程 主线程相关用法 获得当前线程 线程...

  • 创建线程和启动线程

    创建和启动线程,传统有两种方式:方式1、继承Thread类;方式2、实现Runnable接口; 线程类(java....

  • Java线程的创建和启动

    Java中创建线程有3种方式,直接上代码。 对应的调用方式 该方法 劣势:已经继承了Thread类,不能再继承其他...

  • 多线程 - NSThread

    创建和启动线程简单说明 1.创建,启动线程 1.1创建线程(3中方法) 方法1: 方法2: 方法3: 线程参数设置...

  • iOS 多线程-NSThread

    1. 创建和启动线程 创建、启动线程 2. 其他创建线程方式 创建线程后自动启动线程[NSThread detac...

网友评论

    本文标题:Java中的线程创建和启动

    本文链接:https://www.haomeiwen.com/subject/qxueultx.html