java并发编程-1.1线程的创建方法及比较
2017-05-24 20:00
274 查看
在java语言中,线程和其他所有元素一样,都是对象。java提供了两种方式来创建线程:
继承Thread类,并重写run()方法;
在类中实现Runnable接口,并实现run()抽象方法。使用带参数的Thread构造方法来创建Thread对象。该参数就是实现runnable接口的类的一个对象。
继承Thread类的实现:
实现Runnable接口的实现:
对比:
从代码形式上看实现相同的功能,二者仅在main方法中有细微差别。
但由于Java不支持多继承,因此继承Thread类后不能再继承其他类。
另外Thread类包含多个成员方法,Runnable接口下只有一个抽象方法。若仅仅使用线程执行功能,则直接实现Runnable接口会更节省开销(代码区空间)。
综上,在多线程编程时最好使用第二种方法。
继承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创建线程的两种方法比较
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- Java 创建线程的三种方法比较
- Callable,Runnable比较及用法以及创建线程的4种方法
- Java创建线程的三种方法比较
- 创建线程的几种方法及比较
- java中创建线程的两种方法及比较
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- Callable,Runnable比较及用法以及创建线程的4种方法
- Java创建线程的两种方法比较
- Java创建线程的两种方法比较
- Java创建线程的三种方法比较及用法
- JAVA中创建线程的三种方法及比较
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- java创建线程的几种方法比较
- Java创建线程的三种方法比较及用法
- (转)java创建线程的两种方法比较
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- Java创建线程的方法和比较