线程入门java

1:线程创建方式二 

让子类继承Thead类

必须重写Thead类的run方法

写多态的写法

 注意优缺点 线程已经Thread  无法继承其他类

package threadTest;public class ThreadTest1 {//目标:掌握线程的创建方式继承thread类public static void main(String[] args) {//3:创建MyThead线程类的对象代表一个线程//写多态的写法Thread t=new MyThead();//启动线程(自动执行run方法)t.start();  //main线程 t 线程//t.run(); 会出现bugfor (int i = 1; i <= 5; i++) {System.out.println("主线程main输出"+i);}}
}
public class MyThead extends Thread {//1:让子类继承Thead继承//2:必须重写Thead类的run方法@Overridepublic void run() {for (int i = 1; i <= 5; i++) {System.out.println("子类线程MyThead输出:"+i);}}
}

2:线程创建方式二 

优点:任务类只是实现接口,

可以继续继承其他类、实现其他接口,扩展性强

实现类Runnable接口

重写run方法

注意 线程对象和任务对象 不一样

把任务对象交给一个线程对象处理

        //1:定义一个任务 实现Runnable 接口
public class MyRunnable implements Runnable {//2:重写Runnable的run方法@Overridepublic void run() {for (int i = 0; i < 5; i++) {System.out.println("Runnable子线程输出:=" + i);}}}
// 掌握多线程的创建方式二 实现类Runnable接口
public class ThreadTest2 {public static void main(String[] args) {//3:创建任务对象Runnable target= new MyRunnable();//4:把任务对象交给一个线程对象处理// 构造器 public Thread(Runnable target)new Thread(target).start();//  t.start();for (int i = 0; i < 5; i++) {System.out.println("主程main输出:=" + i);}}
}

 2_2:线程创建方式二 

匿名内部类写法

Lambda表达式  代码简化

package threadTest;// 掌握多线程的创建方式二 (ni)匿名内部类写法
public class ThreadTest2_2 {public static void main(String[] args) {//1:创建Runnable 接口的匿名内部类形式(任务对象)Runnable target =new Runnable() {@Overridepublic void run() {for (int i = 1; i <=5 ; i++) {System.out.println("子线程1匿名内部类:" + i);}}};new Thread(target).start();//简化形式1;new Thread(new Runnable() {@Overridepublic void run() {for (int i = 1; i <= 5; i++) {System.out.println("子线2程匿名内部类:" + i);}}} ).start();//简化形式2;new Thread(()-> {for (int i = 1; i <= 5; i++) {System.out.println("子线3程匿名内部类:" + i);}} ).start();for (int i = 1; i <=5 ; i++) {System.out.println("主线程main输出:" + i);}}
}

注意   前两种线程创建方式都存在的一个问题
假如线程执行完毕后有一些数据需要返回,他们重写的run方法均不能直接返回结果
 

解决方法

DK 5.0提供了Callable接口和FutureTask类来实现(多线程的第三种创建方式)

这种方式最大的优点 :可以返回线程执行完毕以后的结果

3线程创建方式三 

  •   多线程的第三种创建方式:利用 Callab 接口 FuturTask 类库来实现
  •   创建 任务
  • 定义一个类实现Callable接口 重写call方法
  • 封装要做的事情 和要返回的数据
  • 把Callable 类型的对象封装成FutureTask(线程任务对象)
  • 把线程任务交给Thread对象
  • 调用Thread对象的start方法启动线程
  • 线程执行完毕后 通过FutureTask对象的get 方法 去获取线程任务执行的结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/133540.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美创科技三重数据安全韧性,杜绝删库跑路

从删库到跑路&#xff0c;教训很多&#xff0c;但类似事件近年来总在重复上演&#xff0c;有运维部为此连夜鏖战恢复&#xff0c;更有企业陷入“至暗时刻”&#xff0c;经济受损、名誉蒙尘。 组织单位应该采取怎样的策略和积极主动的方法&#xff0c;避免酿成严重的后果&#x…

TensorFlow入门(十九、softmax算法处理分类问题)

softmax是什么? Sigmoid、Tanh、ReLU等激活函数,输出值只有两种(0、1,或-1、1或0、x),而实际现实生活中往往需要对某一问题进行多种分类。例如之前识别图片中模糊手写数字的例子,这个时候就需要使用softmax算法。 softmax的算法逻辑 如果判断输入属于某一个类的概率大于属于其…

云原生Kubernetes:Rancher管理k8s集群

目录 一、理论 1.Rancher 2.Rancher 安装及配置 二、实验 1.Rancher 安装及配置 三、问题 1. Rancher 部署监控系统报错 四、总结 一、理论 1.Rancher (1) 概念 Rancher 简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台&#xff0c;实现了 Kubernetes …

软件测试学习(二)静态白盒测试、动态白盒测试、配置测试、兼容性测试、外国语言测试

目录 静态白盒测试&#xff1a;检查设计和代码 正式审查 同事审查 走查 检验 编码标准和规范 通用代码审查清单 数据引用错误 数据声明错误 计算错误 比较错误 控制流程错误 子程序参数错误 输入/输出错误 其他检查 动态白盒测试&#xff1a;带上x光眼镜测试 …

主动配电网故障恢复的重构与孤岛划分matlab程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 参考文档&#xff1a; A New Model for Resilient Distribution Systems by Microgrids Formation&#xff1b; 主动配电网故障恢复的重构与孤岛划分统一模型&#xff1b; 同时考虑孤岛与重构的配电网故障…

【Vue基础-数字大屏】加载动漫效果

一、需求描述 当网页正在加载而处于空白页面状态时&#xff0c;可以在该页面上显示加载动画提示。 二、步骤代码 1、全局下载npm install -g json-server npm install -g json-server 2、在src目录下新建文件夹mock&#xff0c;新建文件data.json存放模拟数据 {"one&…

linux查看文件内容命令more/less/cat/head/tail/grep

1.浏览全部内容more/less 文件&#xff1a; more&#xff1a;可以查看文件第一屏的内容&#xff0c;同时左下角有一个显示内容占全部文件内容的百分比&#xff0c;空格键会显示下一屏的内容&#xff0c;直到文件末尾 [rootmaster data]# more file1less&#xff1a;相较于mor…

1014蓝桥算法双周赛,学习算法技巧,助力蓝桥杯

家人们&#xff0c;我来免费给大家送福利了&#xff01;&#xff01;&#xff01; 【1014蓝桥算法双周赛 】 背景 蓝桥杯全国软件和信息技术专业人才大赛是由工业和信息化部人才交流中心举办的全国性IT学科赛事。参赛高校超过1200余所&#xff0c;累计参赛人数超过40万人。该…

Xcode升级到15.0 解决DT_TOOLCHAIN_DIR问题

根据个人开发遇到的问题做的总结&#xff0c;公司要求Xcode 14.2 &#xff0c;Swift 5.7开发&#xff0c;由于升级了Mac 14.0系统后&#xff0c;Xcode 14.2不能使用&#xff0c;解决方案目前有2个 一、在原来Xcode 14.2 的显示包内容&#xff0c;如图 二、升级到Xcode的15.0后…

XML外部实体注入攻击XXE

xml是扩展性标记语言&#xff0c;来标记数据、定义数据类型&#xff0c;是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义&#xff08;可选&#xff09;、文档元素&#xff0c;一般无法直接打开&#xff0c;可以选择用excl或记事本打…

iPhone 如何强制重启

参考iPhone的官方使用手册 传送门 尤其当 iPhone 未响应&#xff0c;也无法将其关机再开机&#xff0c;此方法最有效&#xff1a; 按住调高音量按钮&#xff0c;然后快速松开。按住调低音量按钮&#xff0c;然后快速松开。按住侧边按钮。当 Apple 标志出现时&#xff0c;松开侧…

【IDEA项目个别类爆红,但是项目可以正常运行】

打开项目时发现idea个别类爆红,但是项目可以正常运行 问题原因&#xff1a;Idea本身的问题&#xff0c;可能是其缓存问题&#xff0c;导致爆红 解决方案&#xff1a;重置Idea 很多时候排查不出代码问题&#xff0c;就尝试一下此操作。 选择目录&#xff1a;File–>Invalida…