Thread类(Java多线程操作之Thread类,源码解析)

1 篇文章 0 订阅
1 篇文章 0 订阅

JAVA多线程实现方式主要有三种:


    1,继承Thread类;
    2,实现Runnable接口;
    3,使用ExecutorService、Callable、Future实现有返回值的多线程。

其中前两种方式线程执行后都没有返回值,最有一种执行后有返回值。

  1. 继承Thread类实现多线程
    继承Thread类本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。Start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程比较简单,通过自己的类直接extend Threa,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。
    如下:通过继承Thread类来实现两个线程的执行
class SimpleThread extends Thread {
    public SimpleThread(String str) {
        super(str);
    }
    public void run() {
        for (int i = 0; i < 10; i++) {
           System.out.println(i + "" + getName());
            try {
                sleep((int)(Math.random() * 1000));
            } catch (InterruptedException e) {}
        }
        System.out.println("DONE! " + getName());
    }
}

在main方法中执行的代码:

public class TwoThreadsTest {
    public static void main (String[] args) {   
        new SimpleThread("Go to Beijing??").start();
        new SimpleThread("Stay here!!").start();      
    }
}

两个线程交替执行的控制台结果显示:

0Stay here!!
0Go to Beijing??
1Go to Beijing??
1Stay here!!
2Go to Beijing??
3Go to Beijing??
2Stay here!!
3Stay here!!
4Go to Beijing??
4Stay here!!
5Go to Beijing??
6Go to Beijing??
5Stay here!!
6Stay here!!
7Stay here!!
7Go to Beijing??
8Go to Beijing??
8Stay here!!
9Go to Beijing??
DONE! Go to Beijing??
9Stay here!!
DONE! Stay here!!

分析:
从两个线程的执行顺序我们可以看出,他们在执行的过程中并没有按照礼让的顺序来进行顺序执行,当一个线程执行完后,可能并不是除这个线程之外的线程来执行,而是当前线程继续来执行。
这是因为多线程执行时属于并发执行,每一个线程占用CPU的一个时间段,当时间段没有执行完,则暂停而去执行另外的线程。执行完时间段之后再恢复第一个线程的执行。


代码说明:这里距离说明的是两个线程之间的输出关系,当出现多个线程时,当多个线程的时候,同理两个线程,在多个线程之间以分配的时间内进行线程的执行,时间段结束则自动让出CPU,而让其他线程来进行执行。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HuaCode

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

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

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

打赏作者

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

抵扣说明:

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

余额充值