Java_多线程
2021-04-18 22:06:58 0 举报
AI智能生成
全面、高效的知识图谱:Java_多线程!! 全面又深度的提升认知,达到实际应用的目的! 建议先纵观全局,掌握好大方向。 再根据自己的需要,针对性的学习某一个点,最后做到逐步由点及面。
作者其他创作
大纲/内容
ThreadLocal类
Thread类
方法
long:getId()
String:getName()
Thread State:getState()
void:interrupt
static boolean:interrupted()
boolean:isAlive()
boolean:isDaemon()
void:setName()
static void:sleep()
构造器
Thread()
Thread(Runnable target)
Thread(Runnable target,String name)
Thread(String name)
Thread(ThreadGroup group,Runnable target)
Thread(Thread group,Runnable target,String name)
Thread(ThreadGroup group,Runnable target, String name, long stackSize)
Thread(ThreadGroup group,String name)
内容
什么是多线程
线程是程序中的执行线程,java虚拟机允许应用程序并发地运行多个执行线程
多线程应用场景
多线程通讯
实现多线程的两种方式
继承Thread类
实现Runnable接口
因为java单继承的原因,所以这种方式更灵活
多线程状态
新建
new一个Thread类的普通方法,当一个线程对象被创建,但是没有开启,这个时候,只是线程对象开辟了内存空间和初始化数据
就绪
新建的对象调用start()方法,就开起了新线程,线程就到了就绪状态,在这个状态的线程对象,具有执行资格,没有执行权,
运行:
当线程获取到了cpu的资源,在这个状态的线程对象,集邮执行资格,也有执行权
冻结
运行过程中的线程由于某些原因,释放了执行资格和执行权,当然他们可以回到运行状态,只不过不是直接回到,而是先回到就绪状态
死亡
当线程对象调用的run方法结束,或者直接调用,stop方法,,就让线程对象死亡,在内存中变成了垃圾
多线程状态转换,
分支主题
常见方法
静态方法
sleep(),使线程休眠
geThreadtCurrent()
普通方法
setName(),给线程起个名字
start(),启动线程,使线程进入就绪状态
t1.join()
t1.join(10)
run()线程执行方法
stop()终止线程
setPriority()
getPriority()
多线程同步
多线程安全问题
原因:
当程序的多条语句在操作线程共享数据时,由于线程的随机性,导致一个线程对多条语句,执行了一部分
同步机制
什么是多线程同步
同步是用来解决多线程的安全问题的,再多线程中,痛不能控制对共享数据的访问,如果没有同步,当一个线程在修改共享数据时,而另一个线程正在使用或者更新同一个共享数据,这样更容易导致程序出现错误的结果
锁
什么是锁?
锁就是对象
锁的作用是什么
锁的作用是保持线程同步,解决线程安全问题
同步前提
必须保证有两个以上的线程
必须保证同步中只有一个线程在运行
必须是多个线程使用同一个锁,即多条语句在操作线程共享数据
同步优缺点
优点:
同步解决了多线程的安全问题
缺点
多线程都需要判断锁,比较消耗资源
同步的两种形式
同步代码块
同步函数
死锁
两个线程对两个同步对象具有循环依赖时,就会发生死锁,即同步嵌套同步,而锁却不相同
多线程通讯
同步
while轮询的方式
wait/notify机制
管道通信
Runnable
run()
使用实现接口 Runnable 的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run 方法。
简介
Runnable接口应该由那些打算通过某一线程执行其实例的类来实现,类必须定义一个称为run的无参构造方法,设计该接口的目的是希望在活动执行代码的对象提供一个公共协议,例如,Thread类实现了Runnable,激活的意思是说
0 条评论
下一页