java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
本文主要介绍了 Java 多线程实现的两种方式: 继承 Thread 类、实现 Runnable 接口。具有一定的参考价值,下面跟着小编一起来看下吧
java 多线程实现方式主要有两种:继承 Thread 类、实现 Runnable 接口
1、继承 Thread 类实现多线程
继承 Thread 类的方法尽管被我列为一种多线程实现方式,但 Thread 本质上也是实现了 Runnable 接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过 Thread 类的 start() 实例方法。start() 方法是一个 native 方法,它将启动一个新线程,并执行 run() 方法。这种方式实现多线程很简单,通过自己的类直接 extend Thread,并复写 run() 方法,就可以启动新线程并执行自己定义的 run() 方法。例如:
- public class MaYi extends Thread {
- String name;
- public MaYi(String name) {
- this.name = name;
- }
- public void run() {
- while (true) {
- try {
- Thread.sleep(1000); //等待1秒
- } catch(InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println(name + "蚂蚁正在下载......");
- }
- }
- }
启动线程:
- public static void main1(String[] args) {
- MaYi m1 = new MaYi("1号");
- m1.start();
- MaYi m2 = new MaYi("2号");
- m2.start();
2、实现 Runnable 接口方式实现多线程
如果自己的类已经继承另一个类,就无法直接 extends Thread,此时,必须实现一个 Runnable 接口,如下:
- public class MyThread extends OtherClass implements Runnable {
- public void run() {
- System.out.println("MyThread.run()");
- }
- }
为了启动 MyThread,需要首先实例化一个 Thread,并传入自己的 MyThread 实例:
- MyThread myThread = new MyThread();
- Thread thread = new Thread(myThread);
- thread.start();
事实上,当传入一个 Runnable target 参数给 Thread 后,Thread 的 run() 方法就会调用 target.run(),参考 JDK 源代码:
- public void run() {
- if (target != null) {
- target.run();
- }
- }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持 PHPERZ!
来源: http://www.phperz.com/article/17/1222/358845.html