黑马程序员技术交流社区

标题: 创建线程的两种方法 [打印本页]

作者: 刘笑    时间: 2012-6-11 21:11
标题: 创建线程的两种方法
   今天在学习时候发现了创建线程的两种方法,第一种就是大学课本里讲的最多的extends Thread,然后调用start()方法。第二种我以前从来没见过,即通过实现 Runnable接口来创建线程。觉得有必要记下来与大家分享一下,下面即是程序:
import java.io.*;
import java.util.*;
public class foo implements Runnable{
public void run(){
    String s=null; //局部变量在使用前一定要初始化!!!!!
      System.out.println("s=" + s);
}
   public static void main (String[] args){
new foo().start();
  
   }
}
需要注意的是局部变量一定要初始化,切记切记!
作者: 陈明    时间: 2012-6-11 21:45
玩 真的不知道啊
作者: sbeeqnui1987    时间: 2012-6-11 23:31
创建线程有两种方法:继承Thread类和实现Runnable接口。
一种是继承 Thread 类,一种是 实现Runnable 接口,需要重写或者实现 run()方法。
因为java是单继承的,所以不可能让所有的类都继承Thread类,所以必须有这个Runnable 接口。

方法一:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run() ,加入线程所要执行的代码即可。下面是一个例子:
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);来实现。下面是一个例子:
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();
}
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2