Java多线程
2024-11-13 15:02:59 0 举报
Java多线程是一种编程技术,它允许一个应用程序同时执行多个任务。每个任务都在一个独立的线程中运行,这些线程共享进程的资源,如内存和CPU时间。多线程可以提高应用程序的性能和响应速度,因为它可以同时处理多个任务,而不需要等待一个任务完成后再开始另一个任务。
作者其他创作
大纲/内容
0 : 01
wait() notify() 实例
1 : 01
: 00
调用wait方法进入等待
清空
EntryList
-1 置为0 释放线程
图例--> 偏向锁 :锁标志位
调用notify方法唤醒线程并加入排队
所有线程运行完毕
owner
recursions
加锁流程 (不可逆)
唤醒wait中的线程
保存线程获得锁的次数+1
加入wait等待线程
轻量级锁
重量级锁
monitorexit
超时等待
将当前线程放入wait方法中进行等待解决问题。
核心
当前线程进入运行时,由于因某些因素而就绪未完成。造成堵塞
CPU
2个线程
线程栈
获得当前进入锁的线程
线程2 也需要进入方法但由于线程1在某种因素下堵塞,所以后方线程一直处于堵塞排队状态。
方法区
终止
线程3
程序计数器 PC
线程4
单线程下,线程永远是安全的,所以并不需要加锁,控制访问。
堆
线程1
synchronized中monitor才是真正的锁
: 01
运行的时候,只有一个线程访问同步锁。不存在多线程竞争同步锁的情况,则会给线程加上偏向锁
monitor
waitSet
RUNNABLE
wait(Long time)sleep(Long time)join(Long time)
method线程栈
线程2 进入run方法中运行
NEW
多线程的运行方式
new 对象
notifyAll() iinterrupt()notify()
运行完成会释放
wait()
main线程栈
method
竟锁失败进入blcoking
无锁
偏向锁
创建
start()
运行
堵塞
线程3 进入run方法中运行
等待
TERMINATED
cpu
java线程的6种状态
BLOCKED
WAITING
TIMED_WAITING
0 条评论
下一页