线程的创建方式——实现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. Java嵌套类(Nested Classes)总结
  2. 由隐藏层节点数引起的网络准确率的不规则变化02
  3. LeetCode Algorithm 面试题 16.10. 生存人数
  4. 算术运算符_四则与取模运算
  5. 使用UltraEdit来拷贝粘贴二进制
  6. 设置UILabel可变高度(根据文本内容自动适应高度)
  7. java文件拷贝_Java实现文件拷贝的4种方法
  8. 原生 遍历_迭代器模式统一集合的遍历方式
  9. router vue 回到顶部_小猿圈HTML5学习之基于iview的router常用控制方式
  10. 语音识别维特比解码_一种基于维特比算法的花洒语音识别系统及方法与流程
  11. dg修改归档目录 oracle_Oracle RAC归档管理: 修改归档位置(FRA和其他位置)
  12. [软考]项目管理常用案例总结
  13. javascript设置cookie高级篇可跨域访问
  14. 对话腾讯17级员工张正友博士:有关梦想、成长和焦虑
  15. dojo query 实现Ajax,Dojo Query 详解
  16. Opencv多版本共存问题
  17. 10+ 张图来探究 Linux 内核,以及如何高效学习
  18. U盘格式选择 FAT32、exFAT、NTFS
  19. Linux进程管理、防火墙
  20. 解决vim-plug无法下载插件或者插件下载过慢的问题

热门文章

  1. rocketmq及控制台搭建
  2. 设计师:值得长期关注的网站
  3. PostMan动态参数及循环调用
  4. Regression和Classification的区别
  5. Codeforces 219E Parking Lot 线段树
  6. 金刚狼RPG游戏进度1
  7. iframe给php传值,PHP接收从iframe传的值,应使用哪个语句?( )
  8. python中timeit函数_timeit()函数与Python中的示例
  9. pyx 编译成 pyd
  10. Class文件十六进制背后的秘密