问题如下:
一个程序,如果设计到很多人了,请问怎么能做到各设计人员写的程序都不会出现 因为线程资源竞争而死锁

解决方案 »

  1.   

    情景太多,没有太好的办法,之前写过一篇关于资源死锁的文章,里面有两个小例子:http://www.ticmy.com/?p=146
      

  2.   

    1. 若操作共享的数据,允许有拷贝复制的话,用TreadLocal来存储共享数据,不用加锁就不会出现死锁了。当然也可直接使用JDK5中的相关的AtomicInteger、AtomicReference等类
    2. 若操作共享的数据,必须是共享的不允许各线程单独拥有此共享数据,那就要加同步锁了,但加同步锁时,需要注意多个线程 执行的顺序,锁中套锁的情况,比如一线程中 执行的代码的顺利是先获取A锁,但A锁同步代码块中套着B锁。而另一线程中 执行的代码的顺利是先获取B锁,但B锁同步代码块中套着A锁。那么必然会发现死锁。为了防止死锁的发生,应减少同步的代码块,特别是同步套同步的, 非得同步用Lock中的tryLock(long timeout, TimeUnit unit)方法.