当前位置: 首页 > news >正文

Java创建线程的方式

继承Thread类

        这是创建线程的基本方式之一。你需要创建一个新的类,该类继承自Thread类,并重写run()方法。然后,你可以创建这个类的一个实例并调用它的start()方法来启动新线程。

public class MyThread extends Thread { @Override public void run() { // 线程执行的代码 System.out.println("MyThread is running"); } public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); // 启动线程 } 
}

 实现Runnable接口

        这种方式比继承Thread类更加灵活,因为Java不支持多重继承,但可以实现多个接口。你需要创建一个类实现Runnable接口,并重写run()方法。然后,你可以将这个类的实例作为参数传递给Thread类的构造函数来创建线程。

public class MyRunnable implements Runnable {  @Override  public void run() {  // 线程执行的代码  System.out.println("MyRunnable is running");  }  public static void main(String[] args) {  Thread thread = new Thread(new MyRunnable());  thread.start(); // 启动线程  }  
}

实现Callable接口 

Callable接口类似于Runnable接口,但它可以返回一个结果并可能抛出异常。Future接口用于获取Callable任务的结果。通常,我们使用FutureTask类,它实现了FutureRunnable接口,因此可以作为Thread的目标来运行。

public class MyCallable implements Callable<String> {  @Override  public String call() throws Exception {  // 线程执行的代码  return "MyCallable result";  }  public static void main(String[] args) throws ExecutionException, InterruptedException {  ExecutorService executor = Executors.newSingleThreadExecutor();  Future<String> future = executor.submit(new MyCallable());  String result = future.get(); // 获取结果  System.out.println(result);  executor.shutdown(); // 关闭执行器  }  
}

线程池

线程池是一种更高级的用法,它可以管理和复用线程,以减少创建和销毁线程的开销。Java提供了多种线程池实现,如FixedThreadPoolCachedThreadPool等。你可以使用Executors工厂类来创建线程池。

ExecutorService executor = Executors.newFixedThreadPool(10); // 创建一个固定大小的线程池  
executor.submit(new MyRunnable()); // 提交任务给线程池  
executor.shutdown(); // 关闭线程池

请注意,当你使用线程池时,你应该在适当的时候关闭它,以避免资源泄漏。通常,在提交完所有任务后,你应该调用shutdown()shutdownNow()方法来关闭线程池。

相关文章:

Java创建线程的方式

继承Thread类 这是创建线程的基本方式之一。你需要创建一个新的类&#xff0c;该类继承自Thread类&#xff0c;并重写run()方法。然后&#xff0c;你可以创建这个类的一个实例并调用它的start()方法来启动新线程。 public class MyThread extends Thread { Override public vo…...

C# 程序结构

C# 程序结构 C#(读作“C-sharp”)是一种由微软开发的高级编程语言,它是.NET框架的一部分。C# 设计用于现代软件开发,具有强大的类型系统、丰富的库支持和面向对象的特性。本文将详细介绍C#程序的基本结构,包括其语法、类型系统、控制结构、类和对象等。 C# 程序的基本结…...

【Linux】使用 iptables 验证访问HDFS 所使用到的端口

目录 ​编辑 一、实操背景 二、iptables 简介 三、模拟操作 一、实操背景 背景&#xff1a; 在客户有外网的服务器需要访问内网大数据集群HDFS&#xff0c;使用iptable模拟测试需要开放的端口。 二、iptables 简介 具体介绍看文章&#xff1a; 【Linux】Iptables 详解与实战…...

工程设计问题---多盘离合器制动器设计问题

这个问题的主要目的是使多片式离合器制动器的质量最小化。在这个问题中&#xff0c;使用了五个整数决策变量&#xff0c;它们是内半径&#xff08;x1&#xff09;、外半径&#xff08;x2&#xff09;、盘厚度&#xff08;x3&#xff09;、致动器的力&#xff08;x4&#xff09;…...

triton矩阵乘以及缓存优化

这里triton.cdiv(M, META[BLOCK_SIZE_M]) * triton.cdiv(N, META[BLOCK_SIZE_N])&#xff0c;所以grid的形状是一维的。 观察函数内部 pid tl.program_id(axis0)&#xff0c;因为grid是一维的&#xff0c;所以这里就是总块数&#xff0c;我们假设实际A*BC&#xff0c; A&…...

springboot 搭建一个 测试Kafka 集群连通性demo

废话不多说直接上代码&#xff1a; 1.pom <!-- https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka --><dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><ve…...

Ant Design Vue 动态表头和数据填充

创作动态表头和数据填充的前端应用&#xff1a;使用 Ant Design Vue 在现代前端开发中&#xff0c;动态表格是一个常见而且非常有用的功能。Ant Design Vue作为一个优秀的UI组件库&#xff0c;为开发者提供了丰富的组件和API来实现复杂的前端需求&#xff0c;包括动态表头和数…...

在Spring Cloud项目中集成Springdoc OpenAPI生成OpenAPI 3文档的详细解析

在Spring Cloud项目中集成Springdoc OpenAPI生成OpenAPI 3文档的详细解析 在Spring Cloud项目中生成OpenAPI 3文档&#xff0c;可以使用Springdoc OpenAPI。Springdoc OpenAPI提供了一种简单的方法来生成符合OpenAPI 3规范的API文档。以下是详细的步骤和解析&#xff0c;展示如…...

Linux shell 重定向输入和输出

Linux shell 重定向输入和输出 1. Standard I/O streams2. Redirecting to and from the standard file handles (标准文件句柄的重定向)2.1. command > file2.2. command >> file2.3. command 2> file2.4. command 2>> file2.5. command < file2.6. comm…...

electron录制工具-视频保存、编辑页面

效果如下 electron录屏-保存录制视频 资源 导出视频使用了 mp4-wasm&#xff0c;基本使用&#xff0c;可参考 此文 想法 1、点击按钮导出&#xff0c;弹出选择保存文件夹 2、保存成功后&#xff0c;自动打开保存后文件夹窗口并关闭窗口 实现 获取保存文件夹路径&#xff0…...

curl命令行发送post/get请求

文章目录 curl概述post请求get请求 curl概述 curl 是一个命令行实用程序&#xff0c;允许用户创建网络请求curl 在Windows、 Linux 和 Mac 上皆可使用 post请求 一个简单的 POST 请求 -X&#xff1a;指定与远程服务器通信时将使用哪种 HTTP 请求方法 curl -X POST http://ex…...

Redis 分片集群

一. 前言 前面文章介绍了主从集群和哨兵模式。其中主从集群可以通过读写分离的方式解决高并发场景下的读问题&#xff1b;而在主节点出现故障时&#xff0c;又可以通过哨兵模式的自动选举来实现高可用。 Redis 主从集群 && 哨兵模式 二. Redis 分片集群 2.1 分片集群…...

学习分享-Callable 和 Runnable 任务

前言 顺带回顾学习一下Callable 或 Runnable 任务 Callable 和 Runnable 任务 Callable 和 Runnable 是 Java 中用于定义任务的接口&#xff0c;它们主要用于并发编程&#xff0c;允许任务在独立的线程中运行。 Runnable 任务 Runnable 是一个函数式接口&#xff0c;只包含…...

three.js 基础01

1.场景创建 Scene() 2.常用形状集几何体「Geometry」[可设置长宽高等内容&#xff0c;如&#xff1a;new THREE.BoxGeometry(...)] 长方体 BoxGeometry圆柱体 CylinderGeometry 球体SphereGeometry圆锥体ConeGeometry矩形平面 PlaneGeometry 圆面体 CircleGeo…...

使用file.transferTo()做Java文件复制,目标文件存在时,是抛异常还是覆盖写入?

背景 最近在做一个项目&#xff0c;在服务端涉及到文件的复制操作&#xff0c;于是想到了 Java 中 FileInputStream 类的 transferTo() 方法。这里简单记录一下用法&#xff0c;另外&#xff0c;如果目标文件已经存在&#xff0c;该如何处理这种情况呢&#xff1f;是出现异常还…...

Python:线性查找法

什么是线性搜索算法&#xff1f; 线性搜索算法是一种基本的搜索技术&#xff0c;用于查找目标元素是否存在于一个集合&#xff08;通常是列表或数组&#xff09;中。该算法的工作原理非常简单&#xff1a;它从集合的第一个元素开始逐个检查&#xff0c;直到找到目标元素或遍历完…...

IDEA 设置主题、背景图片、背景颜色

一、设置主题 1、点击菜单 File -> Settings : 点击 Settings 菜单 2、点击 Editor -> Color Scheme -> Scheme, 小哈的 IDEA 版本号为 2022.2.3 , 官方默认提供了 4 种主题&#xff1a; Classic Light &#xff08;经典白&#xff09; ;Darcula &#xff08;暗黑主…...

【elementui源码解析】如何实现自动渲染md文档-第三篇

目录 1.前言 2.webpack.demo.js 3.markdown文档 4.fence.js 1&#xff09;tokens 2&#xff09;::: 3&#xff09; 5.containers.js 1&#xff09;markdown-it-container 2&#xff09;md.use() 3&#xff09;代码逻辑 4&#xff09;containers小结 6.congfig.js …...

this指针如何使C++成员指针可调用

在C中&#xff0c;this指针是一个隐藏的指针&#xff0c;指向当前对象实例。它在成员函数中自动可用&#xff0c;用于访问该对象的成员变量和成员函数。理解this指针的工作原理有助于理解为什么指向成员的指针是可调用的。在本文中&#xff0c;我们将详细探讨this指针的概念&am…...

Redis数据结构之字符串(sds)

Redis数据结构之字符串(sds) redisObject 定义如下 struct redisObject {unsigned type:4; //数据类型unsigned encoding:4; /*encoding 编码格式&#xff0c;及存储数据使用的数据结构&#xff0c;同一类型的数据&#xff0c;Redis 会根据数据量&#xff0c;占用内…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...