学习要点笔记---多线程_2

来源:互联网 发布:法律法规数据库系统 编辑:程序博客网 时间:2024/05/16 15:33

8、暂停线程

a)      暂停线程意味着需要使用的时候还可以恢复线程。在JAVA中,可以使用suspernd()方法暂停线程,使用resume()方法恢复线程的执行

b)      Suspend() 和 resume()

c)      缺点,两者使用的时候会造成资源的独占问题!!

                     i.           对于同一个对象,thread1首先进入加锁的线程,并且执行了suspend方法,于是该线程就被锁定了,同时thread2无论是否设置了name = “a”,但是thread1永远不出了,thread2就无法执行

                     i.           第二种常见的死锁独占的问题:

1.      循环中不断打印,对于println()方法

a)      Suspend之后就会独占这把锁,导致不能打印出main ends!!!!!


2、去除线程中的打印方法:


d)      缺点2:不同步问题



9、Yield方法

a)      Yield方法的作用是放弃当前的cpu资源,将他让给其他的任务去占用cpu执行事件,但是放弃的事件不确定,有可能刚刚放弃,就立马又获得了cpu时间片

b)      尝试获取yield放弃cpu时间片的事件:


10、 线程优先级:

a)      优先级越高的线程得到的cpu资源较多,也就是cpu优先执行优先级较高的线程对象中的任务。设置优先级有助于帮“县城规划器”确定下一次选择哪一个线程有限制性

b)      设置优先级使用setPriority()方法。源码如下:

c)      优先级分为1~10个优先级,小于1或者大于10,JDK就会抛出异常

                    i.           使用三个常量来预置定义优先级的值:

d)      线程优先级的继承特性:

                    i.           线程的优先级同样具有继承性,比如A线程启动B线程,则B线程的优先级与A是一样的

ii.      优先级具有继承性,在main中创建调用启动线程,所以其中的线程优先级继承于main的,main的改变后后面的优先级也会改变

e)      优先级具有规则性:








0 0
原创粉丝点击