每周总结-第八周 多线程
多线程概述:充分利用计算机资源,同时执行不同的操作
1.计算机操作系统 进程和线程
2.使用java来完成多线程的编码
3.线程中的常用方法
4.线程同步(重点)
5.死锁
6.生产者消费者模型 异步
操作系统简介
操作系统:本质上就是一个运行在一堆硬件上的巨型软件
没有操作系统的话,程序想要操控硬件,需要c语言或者汇编语言
有操作系统后,程序就可以借助操作系统这个中介来运行。
操作系统存在的意义:帮助上层应用程序屏蔽掉硬件的丑陋接口。
进程:是正在执行的程序,其实就是一块内存区域,存储着程序的资源。
线程:是被cpu调度的最小单位。
Java多线程
两种方法:
1.继承Thread类,重写run方法
使用线程:创建线程对象 调用start()方法启动一个线程
2.实现Runnable接口 创建run方法
使用线程:先创建Runnable对象 在创建线程对象,线程对象必须指向我的Runnable。
线程中的相关方法
setPriority() 设置优先级 1-10 (优先级高不意味着独占cpu)
sleep() 睡眠(重点) 每隔xxx时间去执行一个xxx操作
Join()让当前线程执行 ,主线程等待。
yield()让出cpu,让别人执行一下
interrupt()打断正在睡眠的线程
线程同步
当多个线程共享同一个资源,在某一个线程访问到这个资源的时候,把这个资源暂时封锁,等待执行结束,释放这个锁。
实现:
1.在方法声明上加一个synchronized关键字
2.在方法内部使用synchronized(){}语句块对特定对象上锁
3.手动上锁 :创建一个所锁
lock.lock()上锁
lock.unlock()解锁
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义