多线程
来源:互联网 发布:女生滴风油精知乎 编辑:程序博客网 时间:2024/06/16 04:46
多线程
一、线程的创建
1、继承Thread类
2、实现Runnable接口
在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:
避免单继承的局限,一个类可以继承多个接口。
适合于资源的共享
二、线程的生命周期
有两种调度模型:分时调度模型和抢占式调度模型。
分时调度模型是指让所有的线程轮流获得cpu的使用权,并且平均分配每个线程占用的CPU的时间片。
java虚拟机采用抢占式调度模型,是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那么就随机选择一个线程,使其占用CPU。处于运行状态的线程会一直运行,直至它不得不放弃CPU。
四、线程的同步
线程同步:就是在同一时刻,只能被一个对象来使用
我们可以想象某一共享资源是一间屋子,每个人都是一个线程,当A希望进入房间时他必须获得门锁,一旦A获得门锁,他进去后就立刻将门锁上,于是B,C,D...就不得不在门外等待,直到A释放锁出来后,B,C,D...中的某一人抢到了该锁(然后进屋又将门锁上,这样,任一时刻最多有一人在屋内(使用共享资源)。
五、线程的通信
可参考参考:http://www.cnblogs.com/hapjin/p/5492619.html
①同步
这里讲的同步是指多个线程通过synchronized关键字这种方式来实现线程间的通信。这种方式,本质上就是“共享内
存”式的通信。多个线程需要访问同一个共享变量,谁拿到了锁(获得了访问权限),谁就可以执行。
②while轮询的方式
在这种方式下,线程A不断地改变条件,线程ThreadB不停地通过while语句检测这个条件(list.size()==5)是否成立,从而实现了线程间的通信。但是这种方式会浪费CPU资源。之所以说它浪费资源,是因为JVM调度器将CPU交给线执行时, 它没做啥“有用”的工作,只是在不断地测试 某个条件是否成立。就类似于现实生活中,某个人一直看着手机屏幕是否有电话来了,而不是: 在干别的事情,当有电话来时,响铃通知TA电话来了。
③wait/notify机制
④管道通信
阅读全文
0 0
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 类ThreadLocal的使用
- 数据结构 链表 合并两个有序的单链表 C语言版
- error:could not open ...jvm.cfg解决方法
- caioj1033:递归3(组合+判断素数)
- 问题:占座位
- 多线程
- QT打包支持dll, windeployqt
- deformable convolution
- How to install pip3 for python 3.x
- 树的公共祖先问题
- 健康话语:心悸
- java学习之路
- Java实现选择排序
- 【算法题】两有序数组中位数