线程的创建与启动——Thread 类有两个常用的构造方法:Thread()与 Thread(Runnable)||多线程运行结果是随机的

线程的创建与启动

在 Java 中,创建一个线程就是创建一个 Thread 类(子类)的对象(实例).

Thread 类有两个常用的构造方法:Thread()与 Thread(Runnable).对应的创建线程的两种方式:

定义 Thread 类的子类

定义一个 Runnable 接口的实现类

这两种创建线程的方式没有本质的区别



Mythread.java

package com.dym.juc;
/*
 *  1) 定义类,继承Thread
 * */
public class Mythread extends Thread{
    // 2)重写run方法
    // run() 方法体中的代码就是子线程要执行的任务
    @Override
    public void run() {
        System.out.println("这个是子线程打印的内容");
    }
}

MyThreadTest.java

package com.dym.juc;

public class MyThreadTest {
    public static void main(String[] args) {
        System.out.println("JVM 启动main线程,mian线程执行mian方法");
        //3)创建子线程对象
        Mythread thread = new Mythread();
        //4)启动线程
        thread.start();
        /*
        * 调用线程的start()方法来启动线程,
        * 启动线程的实质就是请求JVM运行相应的线程
        * 这个线程具体在什么时候运行由线程调度器(scheduler)决定
        *注意:start()方法调用结束 并不意味这子线程开始运行
        *     新开启的线程会执行run方法
        *     如果开启了多个线程,start()方法调用顺序并不一定就是线程启动的顺序
        *     多线程的运行结果与代码的执行顺序或调用顺序无关
        * */
        System.out.println("main线程后面其他的代码……");
    }
}


多线程运行结果是随机的

Mythread2.java

package com.dym.juc;

public class Mythread2 extends Thread{

    @Override
    public void run() {
        for (int i = 1; i <=10 ; i++) {
            System.out.println("sub thread:"+i);
            int time= (int) (Math.random()*1000);
            try {
                Thread.sleep(time); //线程睡眠,单位是毫秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

MyThreadTest2.java

package com.dym.juc;

/*
* 演示线程运行结果的随机性
* */
public class MyThreadTest2 {
    public static void main(String[] args) {
        Mythread2 mythread2 = new Mythread2();
        mythread2.start(); //开启了子线程
        //当前是main线程
        for (int i = 1; i <=10 ; i++) {
            System.out.println("main:"+i);
            int time= (int) (Math.random()*1000);
            try {
                Thread.sleep(time); //线程睡眠,单位是毫秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_39368007/article/details/115337742