8-2多线程----线程的创建和使用(1)方式一:继承于Thread类

线程的创建和使用–方式一:继承于Thread类

一、说明
1.Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread类来体现。 
2.Thread类的特性
(1)每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体
(2)通过该Thread对象的start()方法来启动这个线程,而非直接调用run()

二、多线程的创建
1.方式一:继承于Thread类
(1)创建一个继承于Thread类的子类
(2)重写Thread类的run();----》奖此线程执行的操作声明在run()中。
(3)创建Thread类的子类的对象
(4)通过此对象调用start()

ThreadTest代码:

package java1;

//1. 创建一个继承于Thread类的子类
class MyThread extends Thread {
    //2. 重写Thread类的run()
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            if (i % 2 == 0) {
                System.out.println(Thread.currentThread().getName() + ":" + i);
            }
        }
    }
}

public class ThreadTest {
    public static void main(String[] args) {
        //3. 创建Thread类的子类的对象
        MyThread t1 = new MyThread();

        //4.通过此对象调用start():①启动当前线程 ② 调用当前线程的run()
        t1.start();
        //问题一:我们不能通过直接调用run()的方式启动线程。
//        t1.run();

        //问题二:再启动一个线程,遍历100以内的偶数。不可以还让已经start()的线程去执行。会报IllegalThreadStateException
//        t1.start();
        //我们需要重新创建一个线程的对象
        MyThread t2 = new MyThread();
        t2.start();

        //如下操作仍然是在main线程中执行的。
        for (int i = 0; i < 100; i++) {
            if (i % 2 == 0) {
                System.out.println(Thread.currentThread().getName() + ":" + i + "***********main()************");
            }
        }
    }

}

输出:

main:0***********main()************
main:2***********main()************
main:4***********main()************
main:6***********main()************
main:8***********main()************
main:10***********main()************
main:12***********main()************
main:14***********main()************
main:16***********main()************
Thread-0:0
Thread-0:2
Thread-0:4
Thread-0:6
Thread-0:8
Thread-1:0
Thread-0:10
Thread-0:12
main:18***********main()************
Thread-0:14
Thread-0:16
Thread-0:18
Thread-0:20
Thread-0:22
Thread-0:24
Thread-0:26
Thread-0:28
Thread-1:2
Thread-1:4
Thread-1:6
Thread-1:8
Thread-1:10
Thread-1:12
Thread-1:14
Thread-1:16
Thread-1:18
Thread-1:20
Thread-1:22
Thread-0:30
Thread-0:32
Thread-0:34
Thread-0:36
Thread-0:38
Thread-0:40
Thread-0:42
Thread-0:44
main:20***********main()************
Thread-0:46
Thread-0:48
Thread-0:50
Thread-0:52
Thread-0:54
Thread-0:56
Thread-0:58
Thread-0:60
Thread-0:62
Thread-0:64
Thread-0:66
Thread-0:68
Thread-1:24
Thread-0:70
main:22***********main()************
Thread-0:72
Thread-0:74
Thread-0:76
Thread-0:78
Thread-0:80
Thread-0:82
Thread-0:84
Thread-0:86
Thread-0:88
Thread-0:90
Thread-0:92
Thread-0:94
Thread-0:96
Thread-0:98
Thread-1:26
main:24***********main()************
Thread-1:28
main:26***********main()************
Thread-1:30
main:28***********main()************
main:30***********main()************
main:32***********main()************
main:34***********main()************
main:36***********main()************
main:38***********main()************
main:40***********main()************
main:42***********main()************
main:44***********main()************
main:46***********main()************
main:48***********main()************
Thread-1:32
main:50***********main()************
main:52***********main()************
Thread-1:34
Thread-1:36
main:54***********main()************
Thread-1:38
main:56***********main()************
Thread-1:40
Thread-1:42
Thread-1:44
Thread-1:46
Thread-1:48
Thread-1:50
Thread-1:52
Thread-1:54
Thread-1:56
Thread-1:58
Thread-1:60
Thread-1:62
Thread-1:64
Thread-1:66
Thread-1:68
main:58***********main()************
main:60***********main()************
main:62***********main()************
main:64***********main()************
Thread-1:70
Thread-1:72
Thread-1:74
Thread-1:76
Thread-1:78
Thread-1:80
Thread-1:82
Thread-1:84
main:66***********main()************
main:68***********main()************
main:70***********main()************
main:72***********main()************
main:74***********main()************
Thread-1:86
Thread-1:88
Thread-1:90
Thread-1:92
Thread-1:94
Thread-1:96
Thread-1:98
main:76***********main()************
main:78***********main()************
main:80***********main()************
main:82***********main()************
main:84***********main()************
main:86***********main()************
main:88***********main()************
main:90***********main()************
main:92***********main()************
main:94***********main()************
main:96***********main()************
main:98***********main()************

Process finished with exit code 0

练习:创建两个分线程,其中一个线程遍历100以内的偶数,另一个线程遍历100以内的奇数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值