【Java - API - 多线程】(01) 通过Java 8完成多线程的创建,快速上手

通过"Java 8"完成多线程的创建,快速上手;

实操

【前提】

  • 使用"Windows 11"系统通过"IntelliJ IDEA"软件完成;

【目录】

  • “方式1”:通过继承"Thread"完成-正常操作;
  • “方式2”:通过实现"Runnable"完成-正常操作;
  • “方式3”:通过继承"Thread"完成-匿名内部类;
  • “方式4”:通过实现"Runnable"完成-匿名内部类;
  • “方式5”:通过继承"Thread"完成-箭头函数;
  • “方式6”:通过实现"Runnable"完成-箭头函数;

【方式1】

代码

【类名A】

ThreadRunningA

【代码A】

public class ThreadRunningA {
public static void main(String[] args) {Thread t1 = new MyThreadA();Thread t2 = new MyThreadB();Thread t3 = new MyThreadC();t1.start();t2.start();t3.start();
}
}

【类名B】

MyThreadA

【代码B】

public class MyThreadA extends Thread{
public void run() {for (int i = 0; i < 100; i++) {System.out.print("A、");}
}
}

【类名C】

MyThreadB

【代码C】

public class MyThreadB extends Thread {
public void run() {for (int i = 0; i < 100; i++) {System.out.print("B、");}
}
}

【类名D】

MyThreadC

【代码D】

public class MyThreadC extends Thread {
public void run() {for (int i = 0; i < 100; i++) {System.out.print("C、");}
}
}

结果

在这里插入图片描述

【方式2】

代码

【类名A】

ThreadRunningB

【代码A】

public class ThreadRunningB {
public static void main(String[] args) {
Runnable r1 = new MyRunnableA();
Runnable r2 = new MyRunnableB();
Runnable r3 = new MyRunnableC();Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
Thread t3 = new Thread(r3);t1.start();
t2.start();
t3.start();
}
}

【类名B】

MyRunnableA

【代码B】

public class MyRunnableA implements Runnable {
public void run(){
for(int i = 0;i<100;i++){System.out.print("A、");
}
}
}

【类名C】

MyRunnableB

【代码C】

public class MyRunnableB implements Runnable {
public void run(){
for(int i = 0;i<100;i++){System.out.print("B、");
}
}
}

【类名D】

MyRunnableC

【代码D】

public class MyRunnableC implements Runnable {
public void run(){
for(int i = 0;i<100;i++){System.out.print("C、");
}
}
}

结果

在这里插入图片描述

【方式3】

代码

【类名A】

ThreadRunningC

【代码A】

public class ThreadRunningC {// 使用内名内部类完成线程的创建public static void main(String[] args) {Thread t1 = new Thread() {public void run() {for (int i = 0; i < 100; i++) {System.out.print("A、");}}};Thread t2 = new Thread() {public void run() {for (int i = 0; i < 100; i++) {System.out.print("B、");}}};Thread t3 = new Thread() {public void run() {for (int i = 0; i < 100; i++) {System.out.print("C、");}}};t1.start();t2.start();t3.start();}
}

结果

在这里插入图片描述

【方式4】

代码

【类名A】

ThreadRunningD

【代码A】

public class ThreadRunningD {
// 使用内名内部类完成线程的创建
public static void main(String[] args) {Runnable r1 = new Runnable() {public void run() {for (int i = 0; i < 100; i++) {System.out.print("A、");}}};Runnable r2 = new Runnable() {public void run() {for (int i = 0; i < 100; i++) {System.out.print("B、");}}};Runnable r3 = new Runnable() {public void run() {for (int i = 0; i < 100; i++) {System.out.print("C、");}}};Thread t1 = new Thread(r1);Thread t2 = new Thread(r2);Thread t3 = new Thread(r3);t1.start();t2.start();t3.start();
}
}

结果

在这里插入图片描述

【方式5】

代码

【类名A】

ThreadRunningE

【代码A】

public class ThreadRunningE {// 使用箭头函数完成线程的创建public static void main(String[] args) {Thread t1 = new Thread(() -> {for (int i = 0; i < 100; i++) {System.out.print("A、");}});Thread t2 = new Thread(() -> {for (int i = 0; i < 100; i++) {System.out.print("B、");}});Thread t3 = new Thread(() -> {for (int i = 0; i < 100; i++) {System.out.print("C、");}});t1.start();t2.start();t3.start();}
}

结果

在这里插入图片描述

【方式6】

代码

【类名A】

ThreadRunningF

【代码A】

public class ThreadRunningF {
// 使用箭头函数完成线程的创建
public static void main(String[] args) {Runnable r1 = () -> {for (int i = 0; i < 100; i++) {System.out.print("A、");}};Runnable r2 = () -> {for (int i = 0; i < 100; i++) {System.out.print("B、");}};Runnable r3 = () -> {for (int i = 0; i < 100; i++) {System.out.print("C、");}};Thread t1 = new Thread(r1);Thread t2 = new Thread(r2);Thread t3 = new Thread(r3);t1.start();t2.start();t3.start();
}
}

结果

在这里插入图片描述

后记

  • 和此文相关的所有内容,需要的请下载;

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

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

相关文章

【QT入门】 Qt自定义信号后跨线程发送信号

往期回顾&#xff1a; 【QT入门】 lambda表达式(函数)详解-CSDN博客 【QT入门】 Qt槽函数五种常用写法介绍-CSDN博客 【QT入门】 Qt实现自定义信号-CSDN博客 【QT入门】 Qt自定义信号后跨线程发送信号 由于Qt的子线程是无法直接修改ui&#xff0c;需要发送信号到ui线程进行修改…

【Unity投屏总结】投屏方案总结

【背景】 想方便自己在VR中工作&#xff0c;打算做一个能够挂多个屏幕的远程控制VR桌面。研究下来发现细分场景有很多&#xff0c;有点鱼和熊掌不可兼得的意味&#xff0c;细分如下。 【投屏场景与解决方案】 希望多人能够同时观看我的屏幕&#xff0c;也就是一屏投多屏&…

C语言知识复盘— 递归算法 | 函数 | 数组

递归 ○ 算法思想&#xff1a; 递归算法分为两大阶段 : 递和归&#xff0c;即就是有去&#xff08;递去&#xff09;有回&#xff08;归来&#xff09;。 递去&#xff1a;将递归问题分解为若干个规模较小,与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决。归…

spring cloud项目微服务间互相调用使用自定义标注进行鉴权方案

来吧&#xff0c;贴代码。 一、背景 我们有一个项目使用了spring cloud&#xff0c;有的微服务需要调用别的微服务&#xff0c;但这些调用没有鉴权&#xff1b;当初项目时间非常紧&#xff0c;同时这部分微服务有的对外也没有鉴权&#xff0c;在代码中设置了无须鉴权&#xf…

C语言中goto

在C语言中,goto语句可用于从程序中的一个位置直接跳转到另一个带有标签的位置。虽然goto语句提供了一些流程控制的灵活性,但它也被认为是一种不好的编程习惯,因为它可能会导致代码难以阅读和维护。 下面是goto语句的基本语法: goto label; ... ... label: statement;在这个示…

Java转换html为图片,图片嵌入pdf/word

一、html转图片 引入依赖 implementation org.xhtmlrenderer:flying-saucer-core:9.1.22html页面转图片对于html标签格式有要求&#xff0c;自己调整&#xff0c;每个标签都要有结束标签&#xff0c;标签也要&#xff0c;标签也要&#xff0c; doctype需要大写 try {String …

字节跳动面试被拷打:高效处理大量数据的JavaScript技巧

一、文章内容 时间分片宏任务微任务前置内容实现时间分片 二、时间切片 什么是时间切片&#xff1f;通过字面意思我们不难理解时间切片就是将时间分成多个片段进行一一渲染数据,时间切片是个抽象的问题,我们可能会想到JavaScript中window自带的setTimeout的延迟函数或者是 w…

Docker进阶教程 - 2 Docker部署SpringBoot项目

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 2 Docker部署SpringBoot项目 已经学习了 Dockerfile 了&#xff0c;下面介绍一下如何将 SpringBoot 项目通过 Dockerfile 来部署到 Docker 中。 1 修改项目配置 首先需要准备一个 SpringBo…

单例模式的实现方式

饿汉式单例&#xff08;静态常量初始化&#xff09; // 饿汉式单例&#xff0c;线程安全&#xff0c;类加载时初始化实例 public class SingletonHungry {// 使用私有构造函数防止外部实例化private SingletonHungry() {}// 类加载时创建单例对象并赋值给静态final变量&#x…

初识二叉树

文章目录 一.什么是树二.什么是二叉树三.二叉树的访问次序四.特殊的二叉树五.求结点个数六.平衡二叉树总结 一.什么是树 树是由一个集合以及在该集合上定义的一种关系构成的。 集合中的元素称为树的节点&#xff0c;所定义的关系称为父子关系。 父子关系在树的节点之间建立了一…

安装OneNote for Win10 | Win10/Win11

前言 PC端的OneNote分为2个版本&#xff0c;分别是Microsoft Store版本和Office版本&#xff0c;Microsoft Store版本即为OneNote for Win10&#xff0c;此版的OneNote有最近笔记功能&#xff0c;但检索功能不如Office版本&#xff0c;个人认为2个版本各有优劣。 但OneNote f…

新人应该从哪几个方面掌握大数据测试?

什么是大数据 大数据是指无法在一定时间范围内用传统的计算机技术进行处理的海量数据集。 对于大数据的测试则需要不同的工具、技术、框架来进行处理。 大数据的体量大、多样化和高速处理所涉及的数据生成、存储、检索和分析使得大数据工程师需要掌握极其高的技术功底。 需要你…

nodejs中使用@maxmind/geoip2-node 查询地理位置信息

介绍 maxmind/geoip2-node 是一个Node.js模块&#xff0c;用于与MaxMind的GeoIP2数据库进行交互&#xff0c;从而获取IP地址的地理位置信息。MaxMind的GeoIP2数据库包含了全球范围内的IP地址和对应的地理位置信息&#xff0c;如国家、城市、经纬度等。使用maxmind/geoip2-node…

小苯的三元组 2024年中国传媒大学程序设计大赛

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;给出一个n个数的数组&#xff0c;问有多少个三元组&#xff08;a[i]&#xff0c;a[j]&#xff0c;a[k]&#xff09;满足lcm&#xff08;a[i]&#xff0c;a[j]&#xff09;<gcd&#xff08;a[j]&#xff0c;a[k]&a…

C++进阶学习(2)运算符重载2.0

文章目录 三、几个典型运算符重载1.与--①成员函数②友元函数 2.重载赋值运算符①条件②代码 3.重载运算符[]和()①前提②重载下标运算符 []③重载函数调用符 ()④重载流插入和流提取运算符a.前提 三、几个典型运算符重载 1.与– ①成员函数 #include<iostream> using…

Python连接MariaDB数据库

2024软件测试面试刷题&#xff0c;这个小程序&#xff08;永久刷题&#xff09;&#xff0c;靠它快速找到工作了&#xff01;&#xff08;刷题APP的天花板&#xff09;【持续更新最新版】-CSDN博客 Python连接MariaDB数据库 一、安装mariadb库 pip install mariadb 二、连接…

机器视觉学习(六)—— 图像的颜色识别

目录 一、色彩空间 1.1 RGB色彩空间 1.2 HSV色彩空间 1.3 灰度 1.4 CMYK色彩空间 1.5 Lab色彩空间 二、色彩空间转换 三、识别颜色 3.1 识别一种特定的颜色 3.2 识别多种颜色 一、色彩空间 计算机视觉中常用的色彩空间有RGB色彩空间、HSV色彩空间、CMYK色彩空间、La…

34-Java传输对象模式 ( Transfer Object Pattern )

Java传输对象模式 实现范例 传输对象模式&#xff08;Transfer Object Pattern&#xff09;用于从客户端向服务器一次性传递带有多个属性的数据传输对象也被称为数值对象&#xff0c;没有任何行为传输对象是一个具有 getter/setter 方法的简单的 POJO 类&#xff0c;它是可序列…

解锁AI之门:协助探索Amazon Bedrock服务

AI愈加强大的功能和广泛的应用场景&#xff0c;正逐渐改变着我们的工作和生活方式。 Amazon Bedrock在AI的时代潮流中&#xff0c;也以其强大而灵活的功能特性&#xff0c;正在成为越来越多企业和个人的智能助手。 亚马逊云科技通过VERYCLOUD睿鸿股份的服务能力&#xff0c;使…

揭秘!自定义三维模型如何在RflySim中实现仿真(一)

一.技术背景 在无人系统研发过程中&#xff0c;需要进行大量的运动控制系统半物理实时仿真实验&#xff0c;传统仿真界面的运动轨迹显示多采用的是二维曲线形式&#xff0c;运动过程和状态是通过文本数据显示。随着数据量的增加&#xff0c;该方式缺乏直观性&#xff0c;不易观…