【java】【 thread】runnable 只是一种描述任务的方式,任务需要线程来驱动

写道
package com.mywork.xz;

public class LiftOff implements Runnable {
protected int countDown = 10;// Default,倒数计数
/**
* 线程计数,java 中,当声明一个事物是static时, 表示这个事物,不会与包含它的那个类的对象关联
* 在一起,而是属于这个类。jvm中,执行new 创建 对象时,数据的存储空间才被分配。而static在 类被加载是就已经被执行了。
*/
private static int taskCount = 0;
private final int id = taskCount++;// 线程ID

public LiftOff() {
};

public LiftOff(int countDown) {
this.countDown = countDown;
}

public String status() {
return "#" + id + "(" + (countDown > 0 ? countDown : "LiftOff!") + ")";
}

public void run() {
while (countDown-- > 0) {
System.out.print(status());
Thread.yield();
}
}
}

 

写道
package com.mywork.xz;

public class MainThread {
public static void main(String[] args) {
for(int i=0;i<5;i++){
new LiftOff().run();
}
System.out.println("------");
for(int i=0;i<5;i++){
new Thread(new LiftOff()).start();
}
}
}

 输出结果:

前一个for循环:

#0(9)#0(8)#0(7)#0(6)#0(5)#0(4)#0(3)#0(2)#0(1)#0(LiftOff!)

#1(9)#1(8)#1(7)#1(6)#1(5)#1(4)#1(3)#1(2)#1(1)#1(LiftOff!)

#2(9)#2(8)#2(7)#2(6)#2(5)#2(4)#2(3)#2(2)#2(1)#2(LiftOff!)

#3(9)#3(8)#3(7)#3(6)#3(5)#3(4)#3(3)#3(2)#3(1)#3(LiftOff!

)#4(9)#4(8)#4(7)#4(6)#4(5)#4(4)#4(3)#4(2)#4(1)#4(LiftOff!)

 后一个for循环

#5(9)#5(8)#7(9)#5(7)#7(8)#5(6)#7(7)#6(9)#9(9)#8(9)#6(8)#8(8)#6(7)#8(7)#6(6)#8(6)#6(5)#8(5)#6(4)#8(4)#6(3)#8(3)#6(2)#8(2)#6(1)

#8(1)#6(LiftOff!)#8(LiftOff!)#5(5)#7(6)#7(5)#7(4)#7(3)#7(2)#7(1)#7(LiftOff!)#9(8)#5(4)#9(7)#5(3)#9(6)#5(2)#9(5)#5(1)#9(4)#5(LiftOff!)

#9(3)#9(2)#9(1)#9(LiftOff!)

 

 可见,run方法并无特殊之处,他不会产生任何内在的线程能力,要实现线程行为,你必须显示的将一个任务附着到线程上。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值