排队分发任务(线程安全)
现在需要做一个 排队分发任务(线程安全)的功能就是 我现在用 url(一个action) 用来做分发任务(分发任务就是查询数据库 数据唯一,返回一个json 数据)
问题是 我应该如何控制 这一个url(action)在返回数据的时候的线程安全,让请求过来的请求一个一个等着来处理,然后返回json,保证任务不会重复分给几个请求
谢谢
--------------------编程问答-------------------- 需要把请求过来的会话(session)保存到一个在线表里,表的操作是独占的,线程启动的时候,带上sessionid,至于线程执行的先后顺序可以自己控制,准确的说是服务器推送,jsp会话有效期一般是30分钟 --------------------编程问答-------------------- 你看可不可以用synchronized关键字,让没有得到锁的请求排队等候。 --------------------编程问答-------------------- 试试这种结构:
YourAction--------------------编程问答-------------------- Task类是自定义的,实现Runnable接口即可。
{
// 定制一个合适你的线程池
ExecutorService executor = Executors.newFixedThreadPool(10);
execute(request, response)
{
id = getID(request); // 任务标记
Future f = executor.submit(new Task(id)); // 构造任务并提交给线程池
json = f.get(); // 取得任务的结果json对象
response.set(json); // 将json对象放到response里
}
}
补充:Java , Java EE