15个连表,实现同步轮训,尽量少用线程。(不能一个连表启动一个线程)可能需要使用到操作系统中异步变同步的算法。这个问题不能实现,提供一下这种操作系统算法也行啊。。
谢谢打虾们

解决方案 »

  1.   

    15 所链表,N 个线程,N 应该大于 1 并小于 15,这时楼主的意思吧?15 所链表应该一起放入另外一个链表中,这一点楼主同意吧?我们把这个链表称为队列表。剩下的问题就是每个线程都如何才能够准确地从队列表中,取得一个其他线程未处理的链表。如果 JAVA 中有操作系统的 TryEnterMoniter 之类的方式就好办了,但好像是没有。JAVA 只有 synchronized,这样的话就需要一个特定的对象,各线程可以通过这个对象进行同步。在我这个方案中,这个对象就是“队列表”,要点如下:各线程在 run 方法中首先试图锁定队列表,这样就保证了在任意时刻,只有一个线程可以对队列表进行操作。一旦某个线程得到锁,它就从队列表中取得第一个元素的(即第一个链表)的引用,紧接着,它就从队列表中删除那个它取得的链表,然后它就释放队列表的锁。这样 N 个线程都可以很快地取得自己应该处理的链表。每个线程在处理完它取得的链表之后,它将再一次试图锁定队列表,一日它获得了队列表上的锁,它只是简单地将它刚刚处理远的链表添加到队列表的尾部,然后从头部再取得一个新的待处理的链表后,它就释放锁。这样,N 个线程就可以准确有序地持续运行了。听都来很不错吧?使用的都是 JAVA 最基本的东西,与操作系统完全没有关系。当然,这里只考虑了楼主所表述出来的需求,或许楼主还有其他难处也说不定。祝愉快! :)