Java 线程创建方法之一——实现Runnable接口、匿名内部类写法
线程的创建方式——实现Runnable接口
多线程是很有用的,我们在进程中创建线程的方式有三种:
- 直接定义一个类继承线程类Thread。重写run()方法,创建线程对象
调用线程对象的start()方法启动线程。 - 定义一个饯程任务类实现Runnable接口,重写run()方法, 创建践程任务对象,把
线程任务对象包装成线程对象,调用线程对 象的start()方法启动线程。 - 实现Callable接口(拓展)。
Thread 的构造器
public Thread(){}
public Thread(String name){}
public Thread(Runnable target){}
public Thread(Runnable target,String name){}
实现Runnable接口的方式。
- 创建一个线程任务类实现Runnable接口。
- 重写run()方法。
- 创建一个线程任务对象。
- 把线程任务对象包装成线程对象
- 调用线程对象的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);}}
}
优点:
- 线程任务类只是实现了Runnable接口,可以继续继承其他类,而且可以继续实现其他的功能
- 同一个线程任务对象可以被包装成多个线程对象
- 适合多个相同的程序代码的线程去共享同一个资源
- 实现解棍操作,代码可以被多个线程共享,线程任务代码和线程独立。
匿名内部类写法
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接口、匿名内部类写法相关推荐
- 线程创建方式3-实现 callable接口(Java)
线程创建方式3-实现 callable接口(Java) 线程创建方式三:实现 callable接口 callable的好处: 1.可以定返回值 2.可以抛出异常 package src.Demo02; ...
- java线程初始方法三种_Java 多线程 三种实现方式
Java多线程实现方式主要有三种:继承Thread类.实现Runnable接 口.使用ExecutorService.Callable 实现有返回结果的多线程.其中前两种方式线程执行完后都没有返回值, ...
- java线程创建过程_Java创建线程的细节分析
转载:http://shmilyaw-hotmail-com.iteye.com/blog/1880902 前言 关于线程创建的问题,可以说是老生常谈了.在刚开始学习Thread的时候基本上都会接触到 ...
- 并发编程之二:线程创建方法、运行原理、常见方法(sleep,join,interrupt,park,守护线程等)
线程创建方法.运行原理.常见方法 线程的创建方法 继承Thread 实现Runnable FutureTask 线程的运行原理 栈与栈帧 线程运行情况 线程的上下文切换(Thread Context ...
- 【C++ 语言】线程 ( 线程创建方法 | 线程标识符 | 线程属性 | 线程属性初始化 | 线程属性销毁 | 分离线程 | 线程调度策略 | 线程优先级 | 线程等待 )
文章目录 I 线程创建方法 II 线程执行函数 III 线程标识符 IV 线程属性 V 线程属性 1 ( 分离线程 | 非分离线程 ) VI 线程属性 2 ( 线程调度策略 ) VII 线程属性 3 ...
- 创建一个 Dog 类继承 Thread ,每 2 秒叫一次(汪汪汪!!),创建一个 Cat 实现 Runnable 接口,每 3 秒求抚摸一次(主人快摸摸我!!),主函数(主线程)从 1 输出到 10
题目:创建一个 Dog 类继承 Thread ,每 2 秒叫一次(汪汪汪!!),创建一个 Cat 实现 Runnable 接口,每 3 秒求抚摸一次(主人快摸摸我!!),主函数(主线程)从 1 输出到 ...
- java线程join方法
java线程join方法 1.join方法 join方法的作用是进行线程插队,也就是说调用了join方法的线程相对于调用它的上级线程拥有跟高的执行权.调用join方法的线程的上级线程必须等待调用j ...
- java线程join方法会释放锁吗
java线程join方法会释放锁吗,虽然join底层使用wait,wait是释放锁的 wait()和join()的调用方的区别: object.wait()和thread.join() join()的 ...
- Java Lambda简化Comparator接口匿名内部类写法
Lambda简化Comparator接口匿名内部类写法 //Lambda简化Comparator接口匿名内部类写法public static void main(String[] args) {Lis ...
最新文章
- Java嵌套类(Nested Classes)总结
- 由隐藏层节点数引起的网络准确率的不规则变化02
- LeetCode Algorithm 面试题 16.10. 生存人数
- 算术运算符_四则与取模运算
- 使用UltraEdit来拷贝粘贴二进制
- 设置UILabel可变高度(根据文本内容自动适应高度)
- java文件拷贝_Java实现文件拷贝的4种方法
- 原生 遍历_迭代器模式统一集合的遍历方式
- router vue 回到顶部_小猿圈HTML5学习之基于iview的router常用控制方式
- 语音识别维特比解码_一种基于维特比算法的花洒语音识别系统及方法与流程
- dg修改归档目录 oracle_Oracle RAC归档管理: 修改归档位置(FRA和其他位置)
- [软考]项目管理常用案例总结
- javascript设置cookie高级篇可跨域访问
- 对话腾讯17级员工张正友博士:有关梦想、成长和焦虑
- dojo query 实现Ajax,Dojo Query 详解
- Opencv多版本共存问题
- 10+ 张图来探究 Linux 内核,以及如何高效学习
- U盘格式选择 FAT32、exFAT、NTFS
- Linux进程管理、防火墙
- 解决vim-plug无法下载插件或者插件下载过慢的问题