专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »博文摘选 » 面向对象编程:《Java面向对象编程》学习笔记13——多线程的相关事项 »正文

面向对象编程:《Java面向对象编程》学习笔记13——多线程的相关事项

来源: 发布时间:星期二, 2009年10月6日 浏览:0次 评论:0
转载自:http://blog.csdn.net/gnuhpc/archive/2009/10/06/4635479.aspx

1.关于线程安全类:不可变类总是线程安全的,而可变类的线程安全往往以降低并发性能为代价,注意只对可能导致资源竞争的代码进行synchronized,并且在需要提供单线程和多线程两个环境下通过继承和覆盖而在内部建立采用同步机制的内部类。

2.以下情况持有锁的线程会释放锁:

执行完同步代码块

执行同步代码块中,遇到异常导致线程终止。

执行同步代码块中,执行了锁对象所属的wait()方法。

  而以下情况线程是不会释放锁的:

执行同步代码块中,执行了Thread.sleep()方法,当前线程线程放弃CPU,开始睡眠,但是不会释放锁。

执行同步代码块中,执行了Thread.yield()方法,当前线程线程放弃CPU,将执行权给线程优先级大于等于其的线程,但是不会释放锁。

执行同步代码块中,其他线程执行了当前线程对象的suspend()方法(该方法已经被废弃),当前线程线程放弃CPU,但是不会释放锁。

3.关于死锁:

JVM不监测也不试图避免死锁,因此要自己保证不出现死锁状态。一个通用的经验法则是当几个线程都要访问共享资源A、B和C时,保证使每个线程按照同样的顺序去访问它们。

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: