Java 多线程学习笔记
2021/11/1 1:12:06
本文主要是介绍Java 多线程学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java 多线程
线程简介
-
一个进程,通常可以包含若干个线程,线程是 CPU 调度和执行的单位。
-
线程就是独立的执行路径;
-
在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc 线程;
-
main() 为主线程,即系统的入口,用于执行整个程序;
-
在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能人为干预的;
-
对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制;
-
线程会带来额外的开销,如 CPU 调度时间,并发控制开销;
-
每个线程只能在自己的工作内存中交互,内存控制不当会造成数据不一致。
线程实现(重点)
普通方法调用和多线程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4j9K3lsm-1635691815680)(https://img10.360buyimg.com/ddimg/jfs/t1/141212/26/27751/207535/617e9574Ed49c8f12/5de91c494e9fb485.png)]
三种实现方式
Thread class —— 继承 Thread 类(重点)
Runnable 接口 —— 实现 Runnable 接口(重点)
Callable 接口 —— 实现 Callable 接口(了解)
Thread 实现
自定义线程类继承 Thread 类
重写 run() 方法,编写线程执行体
创建线程对象,调用 start() 方法启动线程
package Thread; // 创建线程方式1:继承 Thread 类,重写 run() 方法,调用 start 开启线程 // 总结:注意,线程开启不一定立即执行,由 CPU 调度执行 public class TestThread1 extends Thread{ @Override public void run() { // run 方法线程体 for (int i=0; i<20; i++) { System.out.println("我在写代码----" + i); } } public static void main(String[] args) { // main 线程,主线程 // 创建一个线程对象 TestThread1 testThread1 = new TestThread1(); // 调用 start 方法开启线程 testThread1.start(); for (int i = 0; i < 20; i++) { System.out.println("我在学习多线程----" + i); } } }
线程状态
线程同步(重点)
线程通信问题
高级主题
这篇关于Java 多线程学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南