您的位置:首页 > 编程语言 > Java开发

java多线程的一些处理技巧

2016-09-14 09:36 239 查看
1)建议使用抛异常的方法来实现线程的停止,因为在catch块中还可以将异常向上抛,使线程停止的事件得以传播

2)使用suspend和resume方法时,如果使用不当,极易造成公共的同步对象的独占,使其他线程无法访问公共同步对象

3)yield方法的作用是放弃当前的CPU资源,将它让给其他的任务去占用CPU执行时间,但放弃的时间是不确定,有可能刚刚放弃,马上又获得CPU时间片。

4)线程的优先级具有继承性,比如A线程启动B线程,则B线程的优先级和A线程一样

5)高优先级的线程总是大部分先执行完,CPU尽量将执行资源让给优先级高的线程,但不代表高优先级的线程全部先执行完。

6)守护线程是一种特殊的线程,它的特性有陪伴的含义,当进程中不存在非守护线程了,则守护线程自动销毁。典型的守护线程就是垃圾回收线程

7)只有共享资源的读写访问才需要同步化,如果不是共享资源,那么根本就没必要同步化。

8)关键字synchronized拥有锁重入的功能,也就是在使用synchronized时,当一个线程得到一个对象锁后,再次请求此对象锁时可以再次得到该对象的锁

9)当一个线程执行的代码出现异常时,其所持有的锁会自动释放。

10)由于存在String常量池的问题,synchronized代码块都不适用String作为锁对象,而改用其他,比如说new Object实例化一个Object对象

11)当方法wait被执行后,锁被自动释放,但执行完notify方法,锁却不自动释放,只有当执行完notify所在的同步synchronized代码块后才释放锁。

12)当线程处于wait状态时,调用线程对象的interrupt方法会出现InterruptException异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 虚拟机 多线程