Java多线程实现-Thread类实现多线程

Java多线程的实现需要有一个前提:有一个线程的执行主类。

多线程的主类

普通的Java方法要想执行,需要有一个类,类里面有一个main方法,这样的类就是主类。
而线程的方法要想执行,除了如同普通方法那样的主类,还需要一个多线程的主类。

Java多线程实现-Thread类实现多线程_第1张图片
多线程的主类

如果要想实现多线程的主类,现在有两种方法:

  • 继承一个Thread类;
  • 【推荐】实现Runnable、Callable接口。

继承Thread实现多线程主类

java.lang.Thread是一个线程操作的核心类。如果现在要想定义一个线程的主类,就是直接继承Thread类,然后覆写其中的run()方法。这个方法就相当于普通主类的main方法。

当有了线程的主类之后,我们会考虑怎么调用。但是,注意的是,调用线程的主类是通过主类的main方法来调用的。调用方法是Thread主类的start方法实现线程启动的。

class MyThread extends Thread{
    private String title;

    public MyThread(String title) {
        this.title = title;
    }

    @Override
    public void run() {
        for(int i=0;i<10;i++){
            System.out.println("My thread title="+title+"i="+i);
        }
    }
}

public class ThreadDemo {
    public static void main(String args[]){
        MyThread myThread1 = new MyThread("thread1");
        myThread1.start();
        MyThread myThread2 = new MyThread("thread1");
        myThread2.start();
        MyThread myThread3 = new MyThread("thread1");
        myThread3.start();
    }
}

线程交替执行的过程如下:

Java多线程实现-Thread类实现多线程_第2张图片
交替执行效果

由于是交替执行的,每次执行的效果应该都是不一样的。

为什么要通过start调用run方法呢?

简单来说,我们编写了run方法,可实际上要实现多线程,必然是对操作系统的调用,由操作系统协调系统资源来实现。
start函数中通过一个start0来调用不同操作系统上的JVM,由JVM负责向不同的操作系统进行协调。这样,就屏蔽了底层的资源协调和实现细节,编码人员只需要关注程序协调的统一接口start方法即可。

Java多线程实现-Thread类实现多线程_第3张图片
start的作用

你可能感兴趣的:(Java多线程实现-Thread类实现多线程)