java并发编程-1.1线程的创建方法及比较

来源:互联网 发布:文字复制软件 编辑:程序博客网 时间:2024/06/05 16:30

在java语言中,线程和其他所有元素一样,都是对象。java提供了两种方式来创建线程:

  • 继承Thread类,并重写run()方法;
  • 在类中实现Runnable接口,并实现run()抽象方法。使用带参数的Thread构造方法来创建Thread对象。该参数就是实现runnable接口的类的一个对象。
继承Thread类的实现:
public class Calculator extends Thread {private int number;public Calculator(int number){this.number = number;}@Overridepublic void run() {// TODO Auto-generated method stubfor(int i =1; i<=10;i++){System.out.printf("%s: %d * %d = %d\n", Thread.currentThread().getName(),number,i,i*number);}}public static void main(String[] args) {// TODO Auto-generated method stubfor(int i=1; i<=10; i++){Calculator calculator = new Calculator(i);calculator.start();//子类对象调用调用父类方法}}}

实现Runnable接口的实现:
public class Calculator implements Runnable {private int number;public Calculator(int number){this.number = number;}@Overridepublic void run() {// TODO Auto-generated method stubfor(int i =1; i<=10;i++){System.out.printf("%s: %d * %d = %d\n", Thread.currentThread().getName(),number,i,i*number);}}public static void main(String[] args) {// TODO Auto-generated method stubfor(int i=1; i<=10; i++){Calculator calculator = new Calculator(i);Thread thread = new Thread(calculator);//将实现Runnable接口的类的对象作为参数,新建Thread对象thread.start();}}}

对比:
从代码形式上看实现相同的功能,二者仅在main方法中有细微差别。
但由于Java不支持多继承,因此继承Thread类后不能再继承其他类。
另外Thread类包含多个成员方法,Runnable接口下只有一个抽象方法。若仅仅使用线程执行功能,则直接实现Runnable接口会更节省开销(代码区空间)。
综上,在多线程编程时最好使用第二种方法。

阅读全文
0 0
原创粉丝点击