1:继承Therad类
2:实现Runnable 接口

1、继承Thread类实现多线程
继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如:

public class MyThread extends Thread {
  public void run() {
   System.out.println("MyThread.run()");
  }
}

在合适的地方启动线程如下:

MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();

2、实现Runnable接口方式实现多线程
如果自己的类已经extends另一个类,就无法直接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();
  }
}

最新文章

  1. PetaPoco利用ODP.NET Managed Driver连接Oracle
  2. 去 IOE,MySQL 完胜 PostgreSQL
  3. Windows Phone 二十、陀螺仪
  4. C语言状态机模板
  5. RedHat Linux 下安装MPlayer 编译源代码方式
  6. BZOJ 3969 low power
  7. IOS开发教程之put上传文件的服务器的配置及实例分享-备用
  8. 重新认识C++
  9. Unity3D 骨骼动画原理学习笔记
  10. react dnd demo
  11. Sargable 与 谓语下推 (predicate pushdown) 简介
  12. OC 使用CIFilter添加图片
  13. Python摸爬滚打之day04----基本数据类型(列表,元组)
  14. 特征点方法 - Harris和SURF的手工实现
  15. docker下centos安装ping命令
  16. 构建Java并发模型框架
  17. 提取数据之goose使用
  18. mysql 的增删改查
  19. eclipse的git插件安装、配置与使用
  20. jmeter-----如何安装插件管理?

热门文章

  1. bzoj1039: [ZJOI2008]无序运动Movement
  2. java sdk与jdk区别
  3. ruby中excel简单操作以及文件读取操作方法
  4. Kylin Java RESTful API
  5. C# 进程间通信之二传递复杂数据类型(转)
  6. mount不是很熟悉 转载文章了解下 转自http://forum.ubuntu.org.cn/viewtopic.php?f=120&t=257333
  7. OpenSSLKey
  8. 【HEVC】1、HM-16.7编码器的基本结构
  9. mac 10.9 安装 gevent
  10. ASP.NET 生命周期 简介