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

Java多线程的使用

2015-10-25 03:01 537 查看
Java有两种方式实现多线程。

第一种——继承Thread类,并重写run方法

步骤:

定义类继承Thread类;

重写子类的run方法,将线程需要执行的代码写在run方法中;

创建子类的对象,则创建了线程对象;

调用该对象的start方法,开启线程。

实例:

public class MyThread extends Thread() {

@Override
public void run() {
// 多线程代码
}

// 其他代码

}


Thread t = new MyThread();
t.start();


第二种——实现Runnable接口,用该类的对象构造Thread类

步骤:

定义类实现Runnable接口;

实现接口中的run方法,将线程需要执行的代码写在run方法中;

用接口对象构造一个Thread对象;

调用Thread对象的start方法,开启线程。

实例:

public class MyClass implements Runnable() {

public void run() {
// 多线程代码
}

// 其他代码

}


MyClass m = new MyClass();
Thread t = new Thread(m);
t.start();


start方法的功能

启动了线程

让jvm调用了Thread类(或子类)对象的run方法

为什么可以有以上两种方式实现多线程?

对于第一种方式很容易理解。由于重写了Thread类的run方法,调用start方法启动线程后,jvm将调用子类重写的run方法;

对于第二种方式,调用start方法启动线程后,jvm将调用Thread类的run方法,其代码如下:

public void run() {
if (target != null) {
target.run();
}

}


其中target为Thread类的成员变量,类型为Runnable。在用Runnable对象构造Thread时,会使target引用该接口对象,所以执行target.run()时,实际上执行了接口对象的run方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: