多线程
1|0多线程
1|1概念
单线程:同时只能执行一个任务
多线程:同时可以执行多个任务
并行:多个事件在同一时间,同时执行
并发:多个事件在同一时刻,交替执行
进程的特性:
- 独立性:进程之间相互独立,各自占据内存空间
- 动态性:进程动态的占据内存空间,cpu,网络等资源
- 并发性:多个进程一起竞争cpu来运行自己
关系:
线程是进程的执行单元
抢占cpu的是进程中的线程
线程抢占到CPU资源才能运行代码
1|2多线程运行原理
CPU在多个线程间快速切换,造成"同时"运行的假象。
1|3多线程的实现方式
- 继承Thread类的方式
- 实现Runnable接口的方式
- 实现Callable接口的方式
继承Thread类
- 定义类继承Thread类
- 重写run方法,编写新线程要执行的代码
- 创建子类对象调用start()方法
实现Runnable接口
区别:
1|4Thread类
静态方法
Constructor and Description |
---|
Thread() 分配一个新的 Thread 对象。 |
Thread(Runnable target) 分配一个新的 Thread 对象。 |
Thread(Runnable target, String name) 分配一个新的 Thread 对象。 |
Thread(String name) 分配一个新的 Thread 对象。 |
方法
long |
getId() 返回此线程的标识符。 |
---|---|
String |
getName() 返回此线程的名称。 |
void |
setName(String name) 将此线程的名称更改为等于参数 name 。 |
1|5线程安全问题
多个线程同时操作共凉资源导致数据错乱,称为线程安全问题。
出现线程安全问题的原因
- 多线程并发
- 同时访问共享资源
线程同步的核心思想
加锁,把共享资源进行上锁,每次只能一个线程进入,操作完毕以后解锁,然后其他线程才能进来
线程同步
方式一:同步代码块
方式二:同步方法
方式三: Lock锁
同步代码块
__EOF__
作 者:YXH
出 处:https://www.cnblogs.com/YxinHaaa/p/17366471.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」