(JAVA)-创建多线程的方式

1.继承Thread类

1.创建一个继承字Thread类的子类

2.重写Thread类的run方法

public class MyThread extends Thread{@Overridepublic void run() {for (int i = 0; i < 100; i++) {System.out.println(getName()+"hello");}}
}

3.创建Thread类的子类对象

4.通过子类对象调用start方法

public class test {public static void main(String[] args) {MyThread t1=new MyThread();MyThread t2=new MyThread();t1.setName("线程1");//给线程对象取名t2.setName("线程2");t1.start();t2.start();}
}

strat方法:启动当前线程,然后由jvm去调用该线程的run方法

run:仅仅是被封装被线程执行的代码,直接调用是普通方法,不会启动线程

可以看到程序一会执行线程1,一会执行线程2

2.实现runnable接口

1.创建一个实现Runnable接口的类

2.实现类去实现Runnable接口中的run抽象方法

public class MyRun implements Runnable{@Overridepublic void run() {for (int i = 0; i < 100; i++) {Thread t=Thread.currentThread();//获取当前线程对象System.out.println(t.getName()+"helloword");}}
}

3.创建实现类对象

4.创建Thread对象,并将实现类对象传入Thread类的构造器中

5.通过Thread类的对象调用start方法

    public static void main(String[] args) {
MyRun mr=new MyRun();//创建多线程要执行的任务Thread t1=new Thread(mr);Thread t2=new Thread(mr);t1.start();t2.start();}
}

注意:一般使用的是实现Runnabble接口方式,因为java只能单继承但能实现多接口

3.callable接口和future接口方式实现

前两种方法的run方法都没有返回值,而第三种方法解决了这个弊端

1.创建一个实现类(Mycallable)实现Callable接口

2.重写call方法

public class MyCallable implements Callable<Integer> {@Overridepublic Integer call() throws Exception {int sum = 0;for (int i = 0; i < 100; i++) {sum=sum+i;}return sum;}
}

3.创建实现类(MyCallable)对象

4.创建Future实现类(FutureTask)对象,将MyCallable对象参数传入

5.创建Thread对象,并将Future实现类对象传入Thread类的构造器中

6.通过Thread类的对象调用start方法

       MyCallable mc=new MyCallable();//表示多线程要执行的任务FutureTask<Integer> ft=new FutureTask<>(mc);//管理多线程运行的结果Thread t=new Thread(ft);t.start();System.out.println(ft.get());}
}

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

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

相关文章

Ubuntu:那些年踩过的坑?注意事项分享

Ubuntu系统在使用过程中可能会遇到一些需要注意的"坑"&#xff0c;以下是一些常见的问题和示例&#xff1a; 1.权限问题&#xff1a; 在Ubuntu中&#xff0c;默认情况下&#xff0c;许多系统文件和目录只有root用户才能修改。如果你试图以普通用户身份修改这些文件&a…

HarmonyOS应用开发实战—开箱即用的应用首页页面【ArkTS】【鸿蒙专栏-34】

一.HarmonyOS应用开发实战—开箱即用的应用首页页面【ArkTS】【鸿蒙专栏-34】 1.1 项目背景 HarmonyOS(鸿蒙操作系统)是华为公司推出的一种分布式操作系统。它被设计为一种全场景、全连接的操作系统,旨在实现在各种设备之间的无缝协同和共享,包括智能手机、平板电脑、智能…

轻量级购物小程序H5产品设计经典样例

主要是看到这个产品设计的不错值得借鉴特记录如下&#xff1a; 不过大多数购物app都大致相同&#xff0c;这个算是经典样例&#xff0c;几乎都可以复制&#xff0c;我第一次使用&#xff0c;感觉和顺畅。看上去产品是经过打磨的&#xff0c;布局非常好。内容也很丰富。支持异业…

Leetcode—128.最长连续序列【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—128.最长连续序列 实现代码 class Solution { public:int longestConsecutive(vector<int>& nums) {unordered_set<int> s;for(auto num: nums) {s.insert(num);}int longestNum 0;for(auto num: s) …

LeetCode day27

LeetCode day27 —今天做到树&#xff0c;&#xff0c;&#xff0c;对不起我的数据结构老师啊~~~ 7. 整数反转 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &#xff0c…

Maven scope属性解读和使用注意事项

目录 compile runtime test system provided import dependencyManagement标签介绍 maven的scope有哪些&#xff1a; maven的scope一共包括&#xff1a;compile、runtime、test、system、provided、import。 compile <dependency><groupId>org.apache.htt…

【PostgreSQL】从零开始:(十六)数据类型-数值类型

数值类型定义 数值类型是一种用于存储数字的数据类型。在编程语言中&#xff0c;数值类型通常包括整数类型和浮点数类型。 整数类型用于存储整数值&#xff0c;包括正整数、负整数和零。在不同的编程语言中&#xff0c;整数类型可能有不同的大小限制&#xff0c;例如8位、16位…

【AI图集】猫狗的自动化合成图集

猫是一种哺乳动物&#xff0c;通常被人们作为宠物饲养。它们有柔软的毛发&#xff0c;灵活的身体和尖锐的爪子。猫是肉食性动物&#xff0c;主要以肉类为食&#xff0c;但也可以吃一些蔬菜和水果。猫通常在夜间活动&#xff0c;因此它们需要足够的玩具和活动空间来保持健康和快…

k8s pod常用资源清单

K8S 的资源清单 参数名类型字段说明apiVersionStringK8S APl 的版本&#xff0c;可以用 kubectl api versions 命令查询kindStringyam 文件定义的资源类型和角色metadataObject元数据对象&#xff0c;下面是它的属性metadata.nameString元数据对象的名字&#xff0c;比如 pod …

Android Uri scheme协议file转content

一、Uri的介绍 在Android开发中&#xff0c;Uri&#xff08;Uniform Resource Identifier&#xff09;是用于标识和访问各种资源的核心概念。这些资源可能包括文件、网络URL、数据库记录等。在处理这些资源时&#xff0c;我们可能会遇到不同的Uri协议&#xff0c;如file和conte…

[PTA]矩阵列平移

给定一个 nn 的整数矩阵。对任一给定的正整数 k<n&#xff0c;我们将矩阵的偶数列的元素整体向下依次平移 1、……、k、1、……、k、…… 个位置&#xff0c;平移空出的位置用整数 x 补。你需要计算出结果矩阵的每一行元素的和。 输入格式&#xff1a; 输入第一行给出 3 个…

Another git process seems to be running in this repository, e.g. an editor o

操作任何git命令&#xff0c;都提示该内容。 Another git process semms to be running in this repository, e.g. an editor opened by ‘git commit’. Please make sure all processes are terminated then try again. If it still fails, a git process remove the file m…

Flink系列之:Print SQL连接器

Flink系列之&#xff1a;Print SQL连接器 一、Print SQL连接器二、创建一张基于Print的表三、连接器参数 一、Print SQL连接器 Print 连接器允许将每一行写入标准输出流或者标准错误流。 设计目的&#xff1a; 简单的流作业测试。对生产调试带来极大便利。 四种 format 选项…

如何保证架构的质量

1. 如何保证架构的质量: ①. 稳定性、健壮性(1). 系统稳定性: ①. 定义:a. 当一个实际的系统处于一个平衡的状态时,如果受到外来作用的影响时,系统经过一个过渡过程仍然能够回到原来的平衡状态.b. 可以说这个系统是稳定的,否则系统不稳定c. 如一根绳子绑着小球,处于垂直状态,…

Golang(壹)

爱情不需要华丽的言语&#xff0c;只需要默默的行动。 简介 应用领域&#xff1a; 下载vscode 使用vscode Go下载 - Go语言中文网 - Golang中文社区 下载sdk 解压到文件中&#xff0c;打开sdk解压文件 穿插dos操作系统知识点&#xff1a; 测试go语言环境 看到vscode 的目录结…

SpringIOC之AnnotatedElementKey

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

Unity学习笔记(零基础到就业)|Chapter01:C#入门

Unity学习笔记&#xff08;零基础到就业&#xff09;&#xff5c;Chapter01:C#入门 前言一、控制台输入输出语句二、初识变量1.一些好用的tips2.变量声明的固定写法3.变量类型 三、变量的本质1.变量的存储空间2.变量的本质&#xff1a;2进制 四、变量的命名规范1.必须遵守的规则…

centos开机自启动实战小案例

1.编写一个我们需要做事的脚本 #!/bin/bash # 打印 "Hello" echo "Hello,Mr.Phor" # 为了更好的能看到效果 我们把这段文本放置到一个文件中 如果重启能够看到 /a.txt文件 我们实验成功 echo "hahahahahahahaha" > /a.txt #每次开机 执行…

AUTOSAR从入门到精通-面向服务的中间件SOME/IP(七)

目录 前言 原理 SOME/IP-TP SOME/IP 传输层协议 SOME/IP-SD服务发现(Service Discovery)

《空气质量持续改善行动计划》发布,汉威科技助力蓝天保卫战

近日&#xff0c;国务院印发《空气质量持续改善行动计划》&#xff0c;这是继2013年“大气十条”之后的第三个国家层面的保卫蓝天行动计划。 计划要求协同推进降碳、减污、扩绿、增长&#xff0c;以改善空气质量为核心&#xff0c;以减少重污染天气和解决人民群众身边的突出大…