Java基础之多线程实例详解编程语言

Java基础之多线程实例详解编程语言

继承Thread类之后,需要覆盖父类的 public void run() 方法,作为线程的主方法。

所有线程的执行一定是并发的,即:同一个时间段上会有多个线程交替执行。为了达到这样的目的,绝对不能直接调用run()方法,而是应该调用Thread类的start()方法启动多线程。

调用 start() 方法和调用 run() 方法的对比:

public class MyThread extends Thread {

    private String name;

    public MyThread(String name) {

        this.name = name;

    }

    @Override

    public void run() {

        for(int i=0; i<10; i++) {

        System.out.println(name + “打印:” + i);

        }

    }

    public static void main(String[] args) {

        MyThread mt1 = new MyThread(“线程A”);

        MyThread mt2 = new MyThread(“线程B”);

        MyThread mt3 = new MyThread(“线程C”);

        mt1.start();

        mt2.start();

        mt3.start();

    }

}

public class MyThread extends Thread {

    private String name;

    public MyThread(String name) {

        this.name = name;

    }

    @Override

    public void run() {

        for(int i=0; i<5; i++) {

        System.out.println(name + “打印:” + i);

        }

    }

    public static void main(String[] args) {

        MyThread mt1 = new MyThread(“线程A”);

        MyThread mt2 = new MyThread(“线程B”);

        MyThread mt3 = new MyThread(“线程C”);

        mt1.run();

        mt2.run();

        mt3.run();

    }

}

运行结果:(三个程序依次顺序执行)

2. start()方法实现多线程的原理

打开Thread类源代码中start()方法的部分:

public synchronized void start() {

    if (threadStatus != 0)

        throw new IllegalThreadStateException();

    group.add(this);

    boolean started = false;

    try {

        start0();

        started = true;

    } finally {

        try {

            if (!started) {

                group.threadStartFailed(this);

            }

        } catch (Throwable ignore) {

        }

    }

}

private native void start0();

native关键字是指调用操作系统的方法,start0()方法是所在操作系统的方法。

由于线程的启动需要牵扯到操作系统中资源的分配问题,所以具体的线程的启动应该根据不同的操作系统有不同的实现。而JVM根据不同的操作系统中定义的start0()方法进行不同的实现。这样,在多线程的层次上start0()方法的名称不改变,而不同的操作系统有不同的实现。

结论:只有Thread类的start()方法才能进行操作系统资源的分配,所以启动多线程的方式永远就是Thread类的start()方法。

Java基础之多线程实例详解编程语言

转载请注明来源网站:blog.ytso.com谢谢!

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/14703.html

(0)
上一篇 2021年7月19日 17:04
下一篇 2021年7月19日 17:04

相关推荐

发表回复

登录后才能评论