您的位置:首页 > 编程语言 > Java开发

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

2017-05-24 20:00 274 查看
在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;
}

@Override
public void run() {
// TODO Auto-generated method stub
for(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 stub
for(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;
}

@Override
public void run() {
// TODO Auto-generated method stub
for(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 stub
for(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接口会更节省开销(代码区空间)。
综上,在多线程编程时最好使用第二种方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 线程 并发