DAY26-JAVA的Runnable介面

如果类别本身已经济成某个妇类别,但现在又要继承Thread类别来建立执行绪,马上就会面临到一个问题-JAVA不能多重继承,换言之,不能继承某个类别之後,又同时继承Thread类别。

实作Runnable介面来建立执行绪
介面是实现多重继承的重要方式,JAVA提供Runnable介面,恰好可以解决这个难题。Runnable介面里已定义抽象的run(),因此只要在类别里确实定义run(),也就是把处理执行绪的程序码放在run()里,即可建立执行绪。

class Test implements Runnable{  //由Test类别实作Runnable介面
...
public void run(){  //详细定义runnable()介面里的run()函数
    for(int i=0;i<4;i++){
        for(int j=0;j<1000000;j++);  //空回圈
        System.out.println("id+" is runnung..");
    }
}
...
public static void main(String args[]){
    Thread t1 = new Thread(dog);  //产生Thread类别产生物件t1
    Thread t2 = new Thread(cat);  //产生Thread类别产生物件t2
    t1.start();  //用t1启动执行绪
    t2.start();  //用t2启动执行绪
}
}

执行绪的生命周期
每一个执行绪,在其产生和销毁之前,均会处於以下五个状态:新产生的(newly created)、可执行的(runable)、执行中的(running)、被冻结的(blocked)和销毁的(dead)状态。这五种状态都可以透过Thread类别所提供的函数来呼叫。

新产生的执行绪
当我们用new Thread()建立物件时,执行绪便马上进入这个状态,但此时系统并不会配置资源,直到用start()启动执行绪才会配置。

可执行的状态
当start()启动执行绪时,执行绪便进入可执行的状态。最先抢到的CPU资源的执行绪先开始执行run(),其余的执行绪便在伫列(queue)中等待机会争取CPU资源,一旦争取到便开始执行。

执行中的状态
最先抢到的CPU资源的执行绪会开始执行run(),此时进入执行的状态。一次只会有一个执行绪处在「执行的状态」中。

被冻结的状态
以下事件发生时,冻结状态就会发生:
(1)该执行绪呼叫物件的wait()函数。
(2)该执行绪本身呼叫sleep()函数。sleep可用来设定睡眠的时间为毫秒。
(3)该执行绪和另一个执行绪join()在一起时。当某一执行绪呼叫join()时,则原来正在执行的执行绪或程序码会先暂停,等到该执行绪结束才会再继续执行。

当执行绪被冻结时,便停止run()的执行,直到被冻结的因素消失後执行绪便回到可执行的状态,继续排队争取CPU的资源。被冻结的因素消失的原因有以下几点:
(1)如果执行绪是由呼叫物件的wait()所冻结,则该物件的notify()被呼叫时可解除冻结。
(2)执行绪进入睡眠(sleep)状态,但指定的睡眠时间已到。

销毁的状态
当执行绪run()执行结束时,或是由执行绪呼叫它的stop()时,此时执行绪进入销毁的状态。当执行绪处於销毁状态之後,无法再次启动该执行绪。

回到开始写文的前几天(大篇幅!!!
怕铁人赛要结束还打不完XDD
See U tomorrow:))

菜鸟工程师的体脂肪

菜鸟工程师也有分享食记,欢迎大家追踪喔~~
https://instagram.com/engineer_bodyfat?utm_medium=copy_link


<<:  Day28 测试写起乃 - Timecop

>>:  Day 13 MSW的return Error Type

我们的基因体时代-AI, Data和生物资讯 Day10-基因疗法中之腺病毒载体与机器学习

上一篇我们的基因体时代-AI, Data和生物资讯 Day09-合成生物学与机器学习分享合成生物学领...

Log Agent - Fluent Bit 安装与常见架构模式

Fluent Bit常见的架构 Forwarder and Aggregator Sidecar /...

Day 18 -SQL 函数 SUM()!

SUM() 函数用来计算一数值栏位的总合。用来算金额等数字类型的都很好用~ SUM() 语法 (SQ...

Day 17 - 研习计画夥伴介绍与脑力激荡篇

经过筛选的阶段後也成功媒合到几位同学,在今天会先分享研习学生们背景、报到的状况以及协助计画发想活动的...

放开那本字典:匿名函式 anonymous function

唯心又看了诗忆之前写的几个高阶函式练习。「嗯⋯⋯我觉得你与其说是对高阶函式不熟,不如说是对匿名函式不...