当前位置:编程学习 > JAVA >>

排队分发任务(线程安全)

现在需要做一个 排队分发任务(线程安全)的功能

就是 我现在用 url(一个action) 用来做分发任务(分发任务就是查询数据库 数据唯一,返回一个json 数据)

问题是 我应该如何控制 这一个url(action)在返回数据的时候的线程安全,让请求过来的请求一个一个等着来处理,然后返回json,保证任务不会重复分给几个请求

谢谢

--------------------编程问答-------------------- 需要把请求过来的会话(session)保存到一个在线表里,表的操作是独占的,线程启动的时候,带上sessionid,至于线程执行的先后顺序可以自己控制,准确的说是服务器推送,jsp会话有效期一般是30分钟 --------------------编程问答-------------------- 你看可不可以用synchronized关键字,让没有得到锁的请求排队等候。 --------------------编程问答-------------------- 试试这种结构:

YourAction
{
  // 定制一个合适你的线程池
  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里
  }
}
--------------------编程问答-------------------- Task类是自定义的,实现Runnable接口即可。
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,