线程学习代码

 

 

public class MyThread extends Thread {

public void run() {

while (running) {

// do lots of interesting stuff

try {

sleep(100);

} catch (InterruptedException e) {

// sleep interrupted

}

}

}

 

public static void main(String args[]) {

Thread t = new MyThread();

t.start();

}

}  

public class ThreadTest
{
 public static void main(String args[])
  {
 Xyz r = new Xyz();
 Thread t1 = new Thread(r);
 Thread t2 = new Thread(r);
 t1.start();
 t2.start();
 }
}

class Xyz implements Runnable
{
 int i;
 
 public void run()
 {
  while (true)
  {
  System.out.println("Hello " + i++);
  if (i >50) break; //如果改为i==50有一个线程将不能终止
  }
 }

运行结果

Hello 0
Hello 1
Hello 2
Hello 3
Hello 4
Hello 5
Hello 6
Hello 7
Hello 8
Hello 9
Hello 10
Hello 11
Hello 12
Hello 13
Hello 14
Hello 15
Hello 16
Hello 17
Hello 18
Hello 19
Hello 20
Hello 21
Hello 22
Hello 23
Hello 24
Hello 25
Hello 26
Hello 27
Hello 28
Hello 29
Hello 30
Hello 31
Hello 32
Hello 33
Hello 34
Hello 35
Hello 36
Hello 37
Hello 38
Hello 39
Hello 40
Hello 41
Hello 42
Hello 43
Hello 44
Hello 45
Hello 46
Hello 47
Hello 48
Hello 49
Hello 50
Hello 51

实现Runnable的优点

  • 从面向对象的角度来看,Thread类是一个虚拟处理机严格的封装,因此只有当处理机模型修改或扩展时,才应该继承类。正因为这个原因和区别一个正在运行的线程的处理机、代码和数据部分的意义,本教程采用了这种方法。

  • 由于Java技术只允许单一继承,所以如果你已经继承了Thread,你就不能再继承其它任何类,例如Applet。在某些情况下,这会使你只能采用实现Runnable的方法。

  • 因为有时你必须实现Runnable,所以你可能喜欢保持一致,并总是使用这种方法。


继承Thread的优点

  • 当一个run()方法体现在继承Thread类的类中,用this指向实际控制运行的Thread实例。因此,代码不再需要使用如下控制:

Thread.currentThread().join();

而可以简单地用:

join();

因为代码简单了一些,许多Java编程语言的程序员使用扩展Thread的机制。注意:如果你采用这种方法,在你的代码生命周期的后期,单继承模型可能会给你带来困难。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值