论述题 3.  在多线程编程的时候有哪些注意事项?
【正确答案】多线程编程是一项非常重要的技能。如何能避免死锁,如何提高多线程并发情况下的性能是非常重要的,下面列出一些在多线程编程情况下的指导原则:
   1)如果能用volatile代替synchronized,尽可能用volatile。因为被synchronized修饰的方法或代码块在同一时间只允许一个线程访问,而volatile却没有这个限制,因此使用synchronized会降低并发量。由于volatile无法保证原子操作,因此在多线程的情况下,只有对变量的操作为原子操作的情况下才可以使用volatile。
   2)尽可能减少synchronized块内的代码,只把临界区的代码放到synchronized块中,尽量避免用synchronized来修饰整个方法。
   3)尽可能给每个线程都定义一个线程的名字,不要使用匿名线程,这样有利于调试。
   4)尽可能用concurrent容器(ConcurrentHashMap)来代替synchronized容器(Hashtable)。因为synchronized容器使用synchronized关键字通过对整个容器加锁来实现多线程安全,性能比较低。而ConcurrentHashMap采用了更加细粒度的锁,因此可以支持更高的并发量。
   5)使用线程池来控制多线程的执行。
【答案解析】