洛神赋

子虚乌有

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  7 Posts :: 10 Stories :: 0 Comments :: 0 Trackbacks
创建线程有两种方法:继承Thread类和实现Runnable接口。
 
方法一:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run() ,加入线程所要执行的代码即可。

a.每个线程都是通过某个特定Thread对象所对应的方法run()l来完成其操作的,方法run()成为线程体。

b.如果想要启动多线程,则肯定调用start()方法,start方法可以调用被子类覆写过的run方法

c.不过这种这种实现方式会受到单继承的局限

下面是一个例子:
public class MyThread extends Thread {
int count= 1, number;
public MyThread(int num) {
number = num;
System.out.println("创建线程 " + number);
}
public void run() {
while(true) {
System.out.println("线程 " + number + ":计数 " + count);
if(++count== 6) return;
}
}
public static void main(String args[]) {
for(int i = 0; i < 5; i++) new MyThread(i+1).start();
}
}
 
方法二:实现 Runnable 接口
  Runnable 接口只有一个方法 run(),我们声明自己的类实现 Runnable 接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。
但是 Runnable 接口并没有任何对线程的支持,我们还必须创建 Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现。

该实现方式有以下好处:

     适合多个相干同程序代码的线程去处理同一资源的情况。

     可以避免由于Java单继承特性带来的局限。

     有利于程序的健壮性,代码能够被多个线程共享。

下面是一个例子:
public class MyThread implements Runnable {
int count= 1, number;
public MyThread(int num) {
number = num;
System.out.println("创建线程 " + number);
}
public void run() {
while(true) {
System.out.println("线程 " + number + ":计数 " + count);
if(++count== 6) return;
} 
}
public static void main(String args[]) {
for(int i = 0; i < 5; i++) new Thread(new MyThread(i+1)).start();
}
}
  两种方法各有千秋,可以灵活运用。





posted on 2010-11-08 11:56 洛神赋 阅读(252) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: