【问题标题】:Multithreading, parallel bubble sort多线程,并行冒泡排序
【发布时间】:2016-05-24 07:43:15
【问题描述】:

在我的 java 应用程序中,我需要合并两个按冒泡排序数组排序的数组,我已经创建了三个线程,两个线程对第一个和最后一个部分进行排序,我想第三个线程来合并顺序数组。

有人可以建议我如何解决这个问题吗?

【问题讨论】:

    标签: java multithreading bubble-sort


    【解决方案1】:

    main定义数组并创建3个线程:“bubble1”、“bubble2”和“merger”:

    int[] array= ... ;
    BubbleThread bubble1=new BubbleThread(array, 0, array.length/2);
    BubbleThread bubble2=new BubbleThread(array, array.length/2, array.length);
    Merger merger=new Merger(bubble1, bubble2);
    bubble1.start();
    bubble2.start();
    merger.start();
    

    线程“bubble1”从数组的开头应用冒泡排序到length/2 - 1。“合并”等待两个线程的完成;然后合并两个排序的部分:

    public void run() {
          bubble1.join();
          bubble2.join();
          // merge the sorted upper and lower halves of the array
    }
    

    【讨论】:

    • 但是我必须在冒泡排序的外部循环的每次迭代之后合并数字。谢谢
    • 您的问题并不清楚。尝试在您未来的问题中包含这些重要的细节。无论如何,合并和两个冒泡分拣机之间的这种同步并不容易。例如,您需要在“BubbleThread”中添加一个名为“getNextNumber()”的同步方法,并将其设置为wait() 作为下一个准备好的数字。 BubbleThread 的run() 必须在每次外部循环迭代结束时signal()
    猜你喜欢
    • 2017-01-16
    • 2015-10-12
    • 2011-12-21
    • 2019-04-21
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 2013-10-09
    相关资源
    最近更新 更多