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

Runnable类

@java
@线程
Runnnable的用法

创建一个Runnable接口的实现类

package ThreadDemo01;/*
 @Author wanghongyuan
  @Date 2021/1/4 
 
*/
//      1.创建一个Runnable接口的实现类

public class RunnableImpl implements Runnable{
    //      2.在实现类中重写Runnable接口的run方法,设置线程任务

    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println(Thread.currentThread().getName()+"-->" + i);
        }
    }
}

在main方法中创建一个Runnable实现类对象

package ThreadDemo01;/*
 @Author wanghongyuan
  @Date 2021/1/4 
 
*/
/*
    创建多线程程序的第二种方式:实现Runnable接口
    java.lang.Runnable,Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现,类必须定义一个称为run的无参方法。
    java.lang.Thread类的构造方法
        Thread(Runnable target)分配新的Thread对象。
        Thread(Runnable target,String name)分配新的Thread对象

    实现步骤:
        1.创建一个Runnable接口的实现类
        2.在实现类中重写Runnable接口的run方法,设置线程任务
        3.创建一个Runnable接口的实现类对象
        4.创建Thread类对象,构造方法中传递Runnable接口的实现类对象。
        5.调用Thread类中的start方法,开启新的线程执行run方法
	
	实现Runnable接口创建多线程程序的好处:
		1.避免了单继承的局限性
			一个类只能继承一个类(一个人只能一个亲爹),类继承了Thread类就不能继承其他的类
			实现了Runnable接口,还可以继承其他的类,实现其他的接口
		2.增强了程序的扩展性,降低了程序的耦合性(解耦)
			实现Runnable接口的方式,把设置线程任务和开启新线程进行了分离(解耦)
			实现类中,重写了run方法:用来设置线程任务
			创建Thread类对象,调用start方法:用来开启新的线程

 */
public class RunnableDemo {
    public static void main(String[] args) {
        // 3.创建一个Runnable接口的实现类对象
        RunnableImpl impl = new RunnableImpl();
        //  4.创建Thread类对象,构造方法中传递Runnable接口的实现类对象。
        Thread t = new Thread(impl);
        // 5.调用Thread类中的start方法,开启新的线程执行run方法
        t.start();
        for (int i = 0; i < 20; i++) {
            System.out.println(Thread.currentThread().getName()+"-->" + i);
        }

    }
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 匿名内部类方式实现线程的创建
  • ThreadSafe解决线程安全的问题
  • 资源唤醒案例
  • 线程池的使用
  • Lambda标准格式
  • File类的构造方法
  • 递归计算
  • 使用递归遍历目录
  • 对文本内容进行排序
  • 测试框架
  • 写个web自动化
  • 与全球外国人即时聊天的网站
  • 将GBK的文件转换成UTF-8的文件格式
  • 反序列化流de使用
  • 使用序列化和反序列化操作集合中的值
  • 2017-08-04 前端日报
  • CentOS从零开始部署Nodejs项目
  • Idea+maven+scala构建包并在spark on yarn 运行
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • jquery ajax学习笔记
  • Next.js之基础概念(二)
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python十分钟制作属于你自己的个性logo
  • 聚簇索引和非聚簇索引
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 七牛云假注销小指南
  • 为什么要用IPython/Jupyter?
  • 一个完整Java Web项目背后的密码
  • linux 淘宝开源监控工具tsar
  • ​卜东波研究员:高观点下的少儿计算思维
  • #LLM入门|Prompt#3.3_存储_Memory
  • $(function(){})与(function($){....})(jQuery)的区别
  • (09)Hive——CTE 公共表达式
  • (2015)JS ES6 必知的十个 特性
  • (二) 初入MySQL 【数据库管理】
  • (二)JAVA使用POI操作excel
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (一)基于IDEA的JAVA基础12
  • (一)认识微服务
  • (源码分析)springsecurity认证授权
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)Linq学习笔记
  • .md即markdown文件的基本常用编写语法
  • .net core 6 集成和使用 mongodb
  • .net 后台导出excel ,word
  • .NET 回调、接口回调、 委托
  • .Net 应用中使用dot trace进行性能诊断
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @PostConstruct 注解的方法用于资源的初始化
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [2018-01-08] Python强化周的第一天
  • [Android 数据通信] android cmwap接入点
  • [codeforces]Checkpoints