1.在使用Lock unLock的时候,如果获取所有的锁失败了,进行释放锁的时候,可能由于出现了同时释放的问题导致了活锁,需要在无论时候,只要释放资源,就加上一个Thread.sleep(RandomTime)

2.在尝试使用无锁类进行更新数值的时候,可能由于没有正确的每次都获取新数值而导致的无限循环问题(就是获取值的地方,没放在while中)

3.尽可能的使用singalAll(),而不是signal()

4.回调问题时候,需要考虑是谁进行的回调的,常见的就是CyclicBarrier,在其中进行回调的是讲计数器减为0的那个函数,所以要注意这一点

5.使用一个线程池,就需要考虑到共享性能的问题,如果某几行代码使用了非常漫长的阻塞式IO,那么可能导致所以的线程都阻塞,从而影响整个系统的性能

发表评论

邮箱地址不会被公开。 必填项已用*标注