我有某些对象需要执行某些任务。所有对象都需要执行所有任务。我想要使用多个线程说N个并行线程在多个键上进行散列:用于执行任务在多线程环境中
说我有对象标识符像A,B,C(对象可以在100 K范围内;键可以是长或字符串) 和任务可以T1,T2,T3 ,TN - (任务数量最大为20)
执行任务的条件 - 即使对于同一个对象,也可以并行执行任务。 但是对于同一个对象,对于一个给定的任务,它应该被串行执行。 实施例,说我有在其上的任务执行是A,B,A 和任务是T1,T2 对象
所以T1(A),T2(A)或T1(A),T2(B)是可能的,但不应允许T1(A)和T1(A)
如何确保满足我的条件。我知道我必须使用某种哈希。 我读到散列,所以我的散列函数可以是 -
返回ObjectIdentifier.getHashCode()+ TaskIdentifier.getHashCode() 或其它可以是 - 一个^ 3 + B^2(其中,a和b是散列对象标识符和任务标识符分别) 什么是最佳策略,任何建议
我的任务不涉及任何IO,并且截至目前,我正在为每个任务使用一个线程。 所以我目前的设计是好的,或者我应该尝试根据处理器的数量来优化它。 (有固定的线程NUM)
感谢您的回答,您好,我的ListOfObjects是我从外部程序recv(通过阻止收集)的一系列消息。在完成n条消息或接收条件之后,我必须停止处理消息,处理该条件,然后继续处理(继续执行阻塞收集循环)。我无法理解如何使用阻止收集来的消息来实现上述功能 – 2014-09-26 00:47:09