Java多线程-初阶1

 博主主页: 码农派大星.

    数据结构专栏:Java数据结构

 数据库专栏:MySQL数据库

JavaEE专栏:JavaEE

关注博主带你了解更多数据结构知识


1. 认识线程(Thread)

1.线程是什么

⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代码. 多个线程之间 "同时" 执⾏ 着多份代码

2. 为啥要有线程

通过写特殊的代码,把多个cpu核心,都能利用起来,这样的代码就叫并发编程.

多进程编程就是一种典型的并发编程.

虽然多进程能够解决问题,但随着对效率的要求越来越高,就希望出现更好的方式来实现并发编程.

多进程的缺点就是太"重".

创建进程,销毁进程(最典型就是服务器开发),开销都比较大(时间,空间).

虽然多进程也能实现 并发编程, 但是线程⽐进程更轻量.

创建线程⽐创建进程更快.

• 销毁线程⽐销毁进程更快.

• 调度线程⽐调度进程更快

线程虽然⽐进程轻量, 但是⼈们还不满⾜, 于是⼜有了 "线程池"(ThreadPool) 和 "协程" (Coroutine)

3.进程和线程的区别

进程是包含线程的. 每个进程⾄少有⼀个线程存在,即主线程。

进程和进程之间不共享内存空间. 同⼀个进程的线程之间共享同⼀个内存空间.

进程是系统分配资源的最⼩单位,线程是系统调度的最⼩单位

⼀个进程挂了⼀般不会影响到其他进程. 但是⼀个线程挂了, 可能把同进程内的其他线程⼀起带⾛(整个进程崩溃).

4.Java 的线程和操作系统线程的关系

线程是操作系统中的概念. 操作系统内核实现了线程这样的机制, 并且对⽤⼾层提供了⼀些 API 供⽤⼾ 使⽤(例如 Linux 的 pthread 库).

Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进⾏了进⼀步的抽象和封装.

5. 创建线程 

⽅法1 继承 Thread 类

继承 Thread 来创建⼀个线程类.

class MyThread extends Thread{@Overridepublic void run() {//这里就是即将创建线程,要执行的逻辑System.out.println("hello,Thread!");}
}
public class Demo1 {public static void main(String[] args) {MyThread t = new MyThread();//创建线程t.start();}
}

 创建 MyThread 类的实例

MyThread t = new MyThread();

调⽤ start ⽅法启动线程 

t.start();

⽅法2 实现 Runnable 接⼝ 

实现 Runnable 接⼝

class MyRunnable implements Runnable{@Overridepublic void run() {System.out.println("hello Runnable!");}
}
public class Demo2 {public static void main(String[] args) {MyRunnable runnable = new MyRunnable();Thread t = new Thread(runnable);t.start();}
}

创建 Thread 类实例, 调⽤ Thread 的构造⽅法时将 Runnable对象作为 Thread 参数.

 Thread t = new Thread(runnable);

调⽤ start ⽅法

 t.start();

其他变形 

匿名内部类创建 Thread ⼦类对象

public class Demo3 {public static void main(String[] args) {Thread t = new Thread(){@Overridepublic void run() {while (true){System.out.println("hello Thread!");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}};t.start();}
}

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

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

相关文章

高并发数据处理中心服务器设计

涉及的相关框架Spring Cloud、RabbitMQ、Redis 和 MySQL; Spring Cloud:用于微服务的开发,确保服务间的通信和协作。 RabbitMQ:用于异步消息队列,确保系统的高可用性和扩展性。 Redis:用作缓存&#xff…

计算机图形学入门07:光栅化中的采样与走样

1.什么是光栅化? 在前面的章节里提过,光栅化(Rasterization)就是将物体投影在屏幕上的图形,依据像素打散,每一个像素中填充不同的颜色。 如下图中的老虎,可以看到屏幕上有各种多边形,这些多边形经过各种变换…

ARM功耗管理架构演进及变迁

安全之安全(security)博客目录导读 目录 一、功耗管理架构演进及变迁概述 二、多核 三、big.LITTLE 四、DynamIQ

教师办公神器推荐,口碑爆棚!

亲爱滴老师们,我要给大家安利几款超级实用的教师办公神器,不仅功能强大,而且口碑爆棚,绝对能让你们的工作效率飞起来! 博思白板:创意无限,教学生动 一款可以无限扩展的数字白板,让教…

Lodop 实现局域网打印

文章目录 前言一、Lodop支持打印的方式lodop 打印方式一般有3种:本地打印局域网集中打印广域网AO打印 二、集成步骤查看lodop 插件的服务端口:查看ip后端提供接口返回ip,前端动态获取最后步骤 前言 有时候会根据不同的ip来获取资源文件&…

Github 最新的上传代码操作步骤

github取消了密码账号授权登录方式 原有的link到github账户后,还需要进行令牌的授权 首先需要创建一个令牌。可以参照以下链接 创建好令牌之后,以后需要执行 git remote set-url origin https://[令牌代码]github.com/xxx/xxx/完整的操作流程如下&am…

linux网络 dns域名解析

目录 DNS 域名体系结构 如何实现域名解析 正向解析 反向解析 主从服务器解析 bond 网卡 DNS 是域名系统的简称 域名和ip地址之间的映射关系 互联网中 IP地址是通信的唯一标识 逻辑地址 访问网站 域名 IP地址不好记 域名朗朗上口 好记 域名解析的目的就是为了实现 访…

为什么我们需要在软件本地化过程中使用术语服务?

你知道软件翻译和本地化的术语服务吗?此解决方案涵盖源术语和目标术语的创建、开发和维护。所有术语都存储在具有多个字段的数据库中,包括术语定义、用法示例、上下文和历史记录。这使我们能够正确处理每个术语的创建或更改请求,避免创建重复…

docker容器内时区相差8小时问题

docker容器内时区相差8小时问题: 提示:java 时间记录差*小时: 进入容器内修改(已经实践过的) (1)更改容器时间 也就是操作的文件夹是容器内的文件夹,不再是宿主机的 首先是从宿主机…

【ai】pycharm远程ssh开发

选 远程开发: SSH 连接到服务器 局域网的ubutnu 服务器的 ssh登录账号 登录后就开始下载 可能ubutnu 服务器上安装一个serverwindows 客户端的pychramr上装一个client ? 突然发现实际有两个下载: 后端也要安装,竟然需要1G 那…

网站调用Edge浏览器API:https://api-edge.cognitive.microsofttranslator.com/translate

Edge浏览器有自带的翻译功能,在运行pc项目可能会遇到疯狂调用Edge的API https://api-edge.cognitive.microsofttranslator.com/translate 这个URL(https://api-edge.cognitive.microsofttranslator.com/translate)指向的是微软认知服务中的A…

【问题解决】adb remount 失败或刷机无法连接设备(KaiOS)

问题描述 1、设备无法adb remount成功, 2、通过fastboot无法识别设备,一直卡住 3、已经识别到9008端口,但是设备与刷机工具connect fail,甚至软件crash 解决方案 1、安装高通驱动工具:QDLoder HS-USB Driver QDLoade…

【Python】【matLab】模拟退火算法求二元高次函数最小值

一、目标函数 求二元高次函数的最小值。目标函数选择: 用于测试算法的简单的目标函数: 二、Python代码实现 import numpy as np# 目标函数(2变量) def objective_function(x):return x[0] ** 2 2 * x[0] - 15 4 * 4 * 2 * x[…

各家AI大胆帮我预测一下2024年全国高考语文作文 并模拟出题 坐看AI算的准不准

chatgpt-4o 抱歉,我无法预测具体的高考题目。不过,我可以根据近年的趋势和主题为你模拟一个可能的作文题目: 2024年全国高考语文作文模拟题目: 题目:《共同的家园》 要求: 以“共同的家园”为主题&…

【Vue】项目目录介绍和运行流程

文章目录 一、项目目录介绍二、public/index.html三、src/main.js四、运行流程 一、项目目录介绍 虽然脚手架中的文件有很多,目前咱们只需认识三个文件即可,这三个文件就决定了我们项目的运行 main.js 入口文件App.vue App根组件index.html 模板文件 我…

Higg FEM 验证 - 模块状态变更常见问题解答

最近的Higg FEM 2023评估适用性逻辑更新导致了自我评估完成率的变化。一些关乎工厂和品牌的常见问题,也许能让您更加容易理解这些变更对您或您企业的影响。 Q为什么在我的Higg FEM模块中有未回答的问题? AHigg FEM 2023模块更新了一个补丁,以确保模块内…

富格林:具备可信方案畅顺出金

富格林认为,对于想要投资黄金的新手来说,在进入市场之前,应该具备可信的操作方案。只有这样,才能够在黄金市场中游刃有余畅顺出金。那么有什么可信操作方案可以帮助我们实现畅顺出金呢?接下来,富格林就给大…

递归在多级数据结构中的简单应用

哈喽,我是小码,半年多没更新了,这段时间换了新工作,工作也很忙。后续会尽量多写点,坚持确实是一件很难,很酷的事情。最近在公司负责开发商品有关的开发,商品包含类型、款式等属性,而…

二十分wgeqw

/*模拟某单位的人事管理。 人事信息主要包括:员工编号、所在部门、职务、薪资等级、薪资、联系方式等内容;部门信息主要包括: 部门编号、部门名称等内容。完成以下操作:实现员工信息、部门信息的添加、修改、删除和查询。*/ #incl…

Windows下 CLion中,配置 OpenVINO,运行Yolov8

之前我们完成了Windows下 CLion中,配置 OpenCV、LibTorch,下面我们来装OpenVINO OpenVINO下载与安装 下载并解压OpenVINO Archives (当前测试了2024.1版本),记住路径,我的是:C:\Libraries\Intel\openvino_2024.1.0 …