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异常。
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异常。
相关文章推荐
- 一些.NET对多线程异常处理技巧分享
- 一些.NET对多线程异常处理技巧分享
- Java图像处理技巧四则
- Java图像处理技巧四则
- sqlserver中关于text/ntext列的一些处理技巧
- Java Swing中的键盘事件处理技巧
- 多线程Java程序中常见错误的巧处理
- 写了一些java的字符处理函数,可能对大家有些用
- Java异常处理机制的详细讲解和使用技巧
- Java技巧:实例讲解Servlet的图象处理
- Java中的模式 --单态-多线程下的处理方式(部分翻译 double-checked locking break)
- Java图像处理技巧四则
- [原创]Java技巧:分布式Jtables处理[1]
- 关于这两天的学到的一些java编界面时的一些技巧或方法。
- 一些有关。NET界面处理与多线程的文章
- Java异常处理机制的详细讲解和使用技巧
- Java图像处理技巧四则-剪切,缩放,灰度变换,彩色变换
- 用PHOTOSHOP处理图片的一些技巧
- asp.net下GDI+的一些常用应用(水印,文字,圆角处理)技巧
- 高手教你如何处理Java图像的技巧四则