Java 如何在多线程读取队列中获得一些订单

Java 如何在多线程读取队列中获得一些订单,java,multithreading,Java,Multithreading,在我的应用程序中,我会接收一些用户数据,将它们放入ArrayBlockingQueue,然后将它们放入数据库。这里有几个线程用于“从队列中获取数据并将其放入数据库”。然后出现了一个问题 数据库用于存储每个用户的当前状态,因此数据的时间顺序非常重要。但是,当使用多线程来“获取和放置”时,无法确保顺序 所以我想到了一个想法,就像“字段分组”:对于不同用户的数据,多线程是可以的,它们之间的顺序可以忽略但每个用户的数据必须由同一线程检索。 现在的问题是,我该怎么做 用户数量有限吗?然后,您可以简单地跨每

在我的应用程序中,我会接收一些用户数据,将它们放入ArrayBlockingQueue,然后将它们放入数据库。这里有几个线程用于“从队列中获取数据并将其放入数据库”。然后出现了一个问题

数据库用于存储每个用户的当前状态,因此数据的时间顺序非常重要。但是,当使用多线程来“获取和放置”时,无法确保顺序

所以我想到了一个想法,就像“字段分组”:对于不同用户的数据,多线程是可以的,它们之间的顺序可以忽略但每个用户的数据必须由同一线程检索。


现在的问题是,我该怎么做

用户数量有限吗?然后,您可以简单地跨每个用户缓存一个线程

    // thread cache
    Map<Sting, Thread> threadcache = new HashMap<String,Thread>();
    threadcache.put("primary_key", t);
    // when accessing the daya
    Thread torun = threadcache.get(queue.peek());
    torun.start();
//线程缓存
Map threadcache=newhashmap();
threadcache.put(“主键”,t);
//访问daya时
Thread-torun=threadcache.get(queue.peek());
torun.start();
否则


Java线程的名称为thread.setName()/getName。使用它来标识线程,但仍然需要根据业务逻辑处理重用。

尝试使用
PriorityBlockingQueue
<代码>应具有可比性。实现逻辑,使每个用户的数据按照所需属性单独排序。也可以使用线程池,而不是单独管理线程。

为什么不使用HTTP会话?请退出