package thread;

class Thread2 implements Runnable{
private String name; public Thread2(String name) {
this.name=name;
} // @Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(name + "运行 : " + i);
try {
Thread.sleep((int) Math.random() * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
} }
public static void main(String[] args) {
new Thread(new Thread2("C")).start();
new Thread(new Thread2("D")).start();
} }

运行结果如下

C运行 : 0
D运行 : 0
C运行 : 1
D运行 : 1
C运行 : 2
D运行 : 2
C运行 : 3
D运行 : 3
C运行 : 4
D运行 : 4

Thread2类通过实现Runnable接口,使得该类有了多线程类的特征。run()方法是多线程程序的一个约定。所有的多线程代码都在run方法里面。Thread类实际上也是实现了Runnable接口的类。
在启动的多线程的时候,需要先通过Thread类的构造方法Thread(Runnable target) 构造出对象,然后调用Thread对象的start()方法来运行多线程代码。
实际上所有的多线程代码都是通过运行Thread的start()方法来运行的。因此,不管是扩展Thread类还是实现Runnable接口来实现多线程,最终还是通过Thread的对象的API来控制线程的,熟悉Thread类的API是进行多线程编程的基础。

参考博客:http://www.cnblogs.com/GarfieldEr007/p/5746362.html

最新文章

  1. EaeyUI
  2. ReflectUitls类的编写和对反射机制的解析
  3. js 监听监键盘动作
  4. js 字符及字符串
  5. ThinkPad E40无线网卡驱动安装 FOR CENTOS6.3
  6. REDGATE又一好用的脚本工具ScriptsManager1.3
  7. mysql建表设置两个默认CURRENT_TIMESTAMP的技巧
  8. 后台前台json传递数据的方式两种方式 $.get, $.getJSON
  9. zepto.js 处理Touch事件
  10. Browser Object Model
  11. Python-生成器_36
  12. [Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)
  13. TopCoder SRM500 Div1 500 分治
  14. 【转载】Hadoop官方文档翻译——HDFS Architecture 2.7.3
  15. ipv6禁用导致rpcbind服务启动失败解决办法
  16. .NET Core开发日志——Action
  17. Oracle EBS OPM 子库存转移
  18. Solr7.4.0的API(Solrj)操作
  19. HP LoadRunner:怎样连接到HP ALM的CAC模式?
  20. vector 邻接表的建立(好笨啊,才懂,可能太困了吧)。。

热门文章

  1. eNSP配置静态路由
  2. 11 Sping框架--AOP的相关概念及其应用
  3. C++—多态与继承
  4. as3效率优化
  5. Consul 的安装与基本使用
  6. 利用ime-mode设置文本框只能输入正整数
  7. NetworkInterface网速监测
  8. css小技巧 --&gt; 单标签实现单行文字居中,多行文字居左
  9. ZYNQ block design警告:[BD 41-968] AXI interface port /axi_lite4 is not associated to any clock port. It may not work correctly.
  10. IOS SDK详解