线程的创建方式——实现Runnable接口

多线程是很有用的,我们在进程中创建线程的方式有三种:

  1. 直接定义一个类继承线程类Thread。重写run()方法,创建线程对象
    调用线程对象的start()方法启动线程。
  2. 定义一个饯程任务类实现Runnable接口,重写run()方法, 创建践程任务对象,把
    线程任务对象包装成线程对象,调用线程对 象的start()方法启动线程。
  3. 实现Callable接口(拓展)。

Thread 的构造器

public Thread(){}
public Thread(String name){}
public Thread(Runnable target){}
public Thread(Runnable target,String name){}

实现Runnable接口的方式。

  1. 创建一个线程任务类实现Runnable接口。
  2. 重写run()方法。
  3. 创建一个线程任务对象。
  4. 把线程任务对象包装成线程对象
  5. 调用线程对象的start()方法启动线程。
public class ThreadDemo2 {public static void main(String[] args) {//3.创建一个线程任务对象(不是线程对象,只是执行线程任务的)Runnable target = new MyRunnable();//4.把线程任务对象包装成线程//Thread t1 = new Thread(target);Thread t2 = new Thread(target,"线程1号");//5.调用start方法t2.start();//主线程加个任务for (int i = 0; i < 10 ;i++){System.out.println(Thread.currentThread().getName()+"=>"+i);}}
}//1.创建一个线程任务类实现runnable接口
class MyRunnable implements Runnable{//2.重写run方法@Overridepublic void run() {for (int i = 0 ;i < 10 ; i++){System.out.println(Thread.currentThread().getName()+"=>"+i);}}
}

优点:

  1. 线程任务类只是实现了Runnable接口,可以继续继承其他类,而且可以继续实现其他的功能
  2. 同一个线程任务对象可以被包装成多个线程对象
  3. 适合多个相同的程序代码的线程去共享同一个资源
  4. 实现解棍操作,代码可以被多个线程共享,线程任务代码和线程独立。

匿名内部类写法

public class ThreadDemo3 {public static void main(String[] args) {Thread t = new Thread(new Runnable() {@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName() + "=>" + i);}}});t.start();//主线程加个任务for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName() + "=>" + i);}}
}

Java 线程创建方法之一——实现Runnable接口、匿名内部类写法相关推荐

  1. 线程创建方式3-实现 callable接口(Java)

    线程创建方式3-实现 callable接口(Java) 线程创建方式三:实现 callable接口 callable的好处: 1.可以定返回值 2.可以抛出异常 package src.Demo02; ...

  2. java线程初始方法三种_Java 多线程 三种实现方式

    Java多线程实现方式主要有三种:继承Thread类.实现Runnable接 口.使用ExecutorService.Callable 实现有返回结果的多线程.其中前两种方式线程执行完后都没有返回值, ...

  3. java线程创建过程_Java创建线程的细节分析

    转载:http://shmilyaw-hotmail-com.iteye.com/blog/1880902 前言 关于线程创建的问题,可以说是老生常谈了.在刚开始学习Thread的时候基本上都会接触到 ...

  4. 并发编程之二:线程创建方法、运行原理、常见方法(sleep,join,interrupt,park,守护线程等)

    线程创建方法.运行原理.常见方法 线程的创建方法 继承Thread 实现Runnable FutureTask 线程的运行原理 栈与栈帧 线程运行情况 线程的上下文切换(Thread Context ...

  5. 【C++ 语言】线程 ( 线程创建方法 | 线程标识符 | 线程属性 | 线程属性初始化 | 线程属性销毁 | 分离线程 | 线程调度策略 | 线程优先级 | 线程等待 )

    文章目录 I 线程创建方法 II 线程执行函数 III 线程标识符 IV 线程属性 V 线程属性 1 ( 分离线程 | 非分离线程 ) VI 线程属性 2 ( 线程调度策略 ) VII 线程属性 3 ...

  6. 创建一个 Dog 类继承 Thread ,每 2 秒叫一次(汪汪汪!!),创建一个 Cat 实现 Runnable 接口,每 3 秒求抚摸一次(主人快摸摸我!!),主函数(主线程)从 1 输出到 10

    题目:创建一个 Dog 类继承 Thread ,每 2 秒叫一次(汪汪汪!!),创建一个 Cat 实现 Runnable 接口,每 3 秒求抚摸一次(主人快摸摸我!!),主函数(主线程)从 1 输出到 ...

  7. java线程join方法

    java线程join方法 1.join方法 ​ join方法的作用是进行线程插队,也就是说调用了join方法的线程相对于调用它的上级线程拥有跟高的执行权.调用join方法的线程的上级线程必须等待调用j ...

  8. java线程join方法会释放锁吗

    java线程join方法会释放锁吗,虽然join底层使用wait,wait是释放锁的 wait()和join()的调用方的区别: object.wait()和thread.join() join()的 ...

  9. Java Lambda简化Comparator接口匿名内部类写法

    Lambda简化Comparator接口匿名内部类写法 //Lambda简化Comparator接口匿名内部类写法public static void main(String[] args) {Lis ...

最新文章

  1. 用一个栈实现另一个栈的排序
  2. 集成学习(ensemble learning)(二)
  3. HTTP(S)协议详解
  4. 如何在画面中摆放大量图片
  5. html并行加载,html – 浏览器中的最大并行HTTP连接数?
  6. rtsp连接断开_live555_RTSP连接建立以及请求消息处理过程
  7. MapBar和MapInfo中的比例尺[更新:MapBar比例尺是正确的]
  8. [leetcode] 1335. 工作计划的最低难度
  9. JBoss WildFly 7 连接到 ActiveMQ 5.9
  10. 将Ubuntu从Win7的魔爪中拯救出来
  11. 【MMD】MikuMikuDance入门必备网址整理
  12. NanoHTTPD介绍
  13. 海思平台Hi3796MV200芯片处理器介绍
  14. gpt和mbr的区别
  15. 算法题9-最短路径问题-Dijkstra算法
  16. 江苏专转本计算机第七章,2013江苏专转本 第七章 无穷级数.ppt
  17. 阿里云centos7部署l2tp后无法连接
  18. 安装LINUX操作系统(CENT OS)
  19. flask 使用cnd导入bootstrap5
  20. python基础之浅谈布尔类型的变量

热门文章

  1. java如何判断活动的namenode_NameNode HA异常调查
  2. 日系明解系列又添新成员!日本编程教育界泰斗手把手教你入门 Python
  3. python一行代码实现求偶或者求奇数
  4. 手机html5 tap事件,HTML5触摸事件演化tap事件介绍
  5. 论坛php 图片上传,Discuz上传图片失败的解决方法
  6. A Song I prefer these days: Amei-记得
  7. 在VS中利用配置文件连接数据库
  8. 继Google AI黑人女性离职后又一女高管被解雇,A I伦理还有很长的路
  9. 赫美集团取消收购易到54%股权 后者拟独立进行IPO
  10. See git help gc for manual housekeeping