栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

多线程入门小结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多线程入门小结

多线程
  • 几个开启多线程的方法
  • 线程常用的几个方法
  • 线程的生命周期
  • 同步线程
  • 死锁
  • Lock锁
  • 生产者消费者问题
  • 线程池

先了解一下程序运行中的线程,进程,多线程都是什么意思
在操作系统中运行的程序就是进程。
进程中又可以有多个进程
比如说在播放视频时:画面,声音,字幕,弹幕都可以算作独立的线程。
很多多线程是模拟出来的,真正的多线程是指有多个CPU,即多核,如果是模拟出来的多线程即在一个CPU的情况下在同一时间点CPU只能执行一个代码因为切换得很快所以就有同时执行的错觉。

几个开启多线程的方法

1.实现runnable接口

2.继承Thread类:因为Thread类是实现了runnable的接口的,所以可以直接调用start方法

线程常用的几个方法

1.sleep线程休眠


2.yield线程礼让

3.join线程强制执行
join合并线程,代此线程执行完成后,再执行其他线程,其他线程处于阻塞状态,可以想象成插队

4.线程的优先级
线程的优先级用数字表示,范围从1-10;数字越大优先级越高
可以使用getPriority().setPriority(int xxx)
只是优先级,并不是排序!也就说可能优先级低的会先执行,也就导致性能倒置的问题!
5.观察线程状态
thread.getState()


6.daemon守护线程

通过setdaemon为true来开启守护线程(默认为false)

线程的生命周期

同步线程

多线程同时操作同一个资源时(并发)容易发生问题,资源状态更新不及时,在库存用尽时还被其他线程识别为有库存继续操作。
这时候我们就需要同步线程,让各个线程排队操作,这样就不会导致库存和实际数量不符了。

死锁

当两个线程都互相捏着对方线程下一步需要获取的资源时
比如说:
我:去面试找工作 公司:需要工作经验
我:需要工作才能有工作经验 公司:需要经验才能工作
这就陷入了死循环,谁也不让谁,程序没有人类智能,人在处理这种事情的时候还能变通,程序不行,程序就需要这个参数才能继续执行,没有就不行。

Lock锁



前面的synchronized和同步块属于是隐式加锁释放锁,lock属于显示锁,可以通过代码手动开启关闭

生产者消费者问题


可以通过释放锁并通知其他线程以此反复来解决这个问题

线程池

创建线程池的方法

 ExecutorService Service = Executors.newFixedThreadPool(3);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/831947.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号