当前位置: 首页 > news >正文

创建多线程的第二种方式--实现Runable接口

翻阅API以后得知创建线程的方式总共有两种,一种使继承Thread类方式,一种是实现Runable接口方式,现在学习第二种方式。

采用java.lang.Runable也是非常常见的一种,同样只需要重写run方法即可。

步骤如下:

1.定义Runable接口的实现类,并重写该接口的run方法,该run方法的方法体同样是该线程的线程执行体。

2.创建Runable实现类的实例对象,并以此实例作为Thread的target来创建Thread对象(Thread的一个构造方法,参数是Runable实现类对象),该Thread对象才是真正的线程对象。

3.调用线程对象的start方法来启动线程。

// 定义Runable接口的实现类
public class RunableImpl implements Runnable{
    // 重写该接口的run方法
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) { // 打印线程名称
            System.out.println(Thread.currentThread().getName() + "-->" + i);
        }
    }
}
public static void main(String[] args) {
    // 创建Runable实现类的实例对象
    RunableImpl impl = new RunableImpl();
    // 以此实例作为Thread的target来创建Thread对象
    Thread td = new Thread(impl);
    // 调用线程对象的start方法来启动线程
    td.start();
    for (int i = 0; i < 20; i++) { // 打印主线程名称
        System.out.println(Thread.currentThread().getName() + "-->" + i);
    }
}

运行截图:

 

 

相关文章:

  • Thread和Runnable的区别和匿名内部类方式实现线程的创建
  • 线程安全
  • 数据结构基本概念和术语
  • 线程状态
  • Object类中wait带参方法和notifyAll方法
  • File类
  • 递归(斐波那契数列、类加、累乘、打印多级目录)
  • FileFilter过滤器
  • LeetCode两数之和
  • 稀疏数组
  • 队列
  • 单链表LinkedList的增删改查
  • 双向链表和环形链表(单向和双向)约瑟夫环实例
  • IO流概述+字节输出流
  • 字节输入流
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • conda常用的命令
  • Elasticsearch 参考指南(升级前重新索引)
  • Electron入门介绍
  • js写一个简单的选项卡
  • linux安装openssl、swoole等扩展的具体步骤
  • MYSQL 的 IF 函数
  • Node项目之评分系统(二)- 数据库设计
  • opencv python Meanshift 和 Camshift
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 编写高质量JavaScript代码之并发
  • 从0到1:PostCSS 插件开发最佳实践
  • 工作手记之html2canvas使用概述
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 理解在java “”i=i++;”所发生的事情
  • 如何实现 font-size 的响应式
  • 我的zsh配置, 2019最新方案
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • # C++之functional库用法整理
  • #define 用法
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (10)STL算法之搜索(二) 二分查找
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (js)循环条件满足时终止循环
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (生成器)yield与(迭代器)generator
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)使用VMware vSphere标准交换机设置网络连接
  • ****Linux下Mysql的安装和配置
  • *Django中的Ajax 纯js的书写样式1
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET 5种线程安全集合
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径