@Wishes
2015-03-26T09:58:31.000000Z
字数 587
阅读 840
- 项目经验: 翻译网站
项目描述
:该项目就是用户提交需要翻译的文档,系统分析产生价格,所有翻译者以该价格为基础竞价翻译。
我所完成的模块
:我当时只参与了该项目的一部分模块就没再继续做了(要参加NTCIR了)。我所参与的是编写线程池和使用Java的RMI编写远程操作数据库。
- 线程池:线程池是自己设计并实现的,并没有使用ThreadPool类和FutureTask类,但是功能十分类似FutureTask+ThreadPool,但是明显要弱一些。最难完成的部分就是FutureTask的get功能,即主线程可以等待任意数量的子线程结束后再开始执行(System类的join方法是等待所有子线结束)。我的实现方式是合理使用ReentrantLock的条件对象,使得主线程可以在子线程运行之前能进入任意的子线程的条件对象的等待,然后子线程完成后唤醒主线程,以避免主线程未进入等待而子线程已经执行完毕了。由于FutureTask+ThreadPool的实现方式非常好,所以最近在看JDK的源码。
- 远程操作数据库:该系统的数据库是分区了的,分别存在两台机器的数据库上,一台存所有表的基数ID,另一台存偶数ID。Dao层的数据库访问都是多线程同时访问两台机器的数据库。主要通过RMI来实现,对于任意一个访问出现异常,另一个访问就该终止。系统运行良好,如果数据量足够大(上百万条),就可以明显的加速。