[size=medium]
对数据加锁是实现多线程的一种策略,但是加锁无疑会增加系统性能开销,如果处理不当会带来巨大损失。
及时使用一些无所算法,但仍然需要在应用层处理线程间的冲突问题,这无疑增加了应用程序的开发难度和算法的复杂度。为了解决这个问题,选择一些现成的无所并行框架就成了解决这个问题的好办法。
Amino 框架就是其中之一,他是apache下的一个分支项目,提供了可用于线程安全的,基于无锁算法的一些数据结构,同时还内置了一些多线程调度模式,使用Amino框架进行软件开发拥有以下优势,1 对死锁问题免疫,2 确保整体进度,3 高并发 无锁竞争带来的性能开销,4 可以轻易使用一些成熟的无所结构,无需自行研发。
Amino 提供了一组LIst 的实现,其中最重要的就是 LockFreeList 和 LockFreeVector 他们都实现了 Java.util.List接口。 LockFreeList 和 LockFreeVector 就好像 List 和 Vector 一样,只不过前者是 无锁 但 线程安全的,其性能 也比后者 高出了 几个数量级。完全可以自行测试,这里省去代码。
[/size]
List list = new LockFreeList();// list
List vector = new LockFreeVector();//vector
[size=medium]
Amino 框架还提供了无所的Set实现 LockFreeSet ,LockFreeSet 实现了java.util.Set接口,是一个使用原子操作实现的无所线程安全的Set 。
其性能也比加锁的set 高出很多。
Amino 还提供了 Amino 树 和 Amino图,可自行查找资料。
[/size]