java吧 关注:1,274,704贴子:12,786,065

今天去应聘被考官提了个问题~

只看楼主收藏回复

考官的问题主要是写多线程快速排序算法
我写的时候遇到了问题,如下:
在主线程A(A为main函数所在线程)中 创建实例:线程池c 和 线程B,并把线程池c 传给 线程B的成员c
将线程B放在线程池c中执行。
//注:partition是快排一次排序的操作,返回标杆的最终位置。
其中线程B的run方法 再次创建2个B的实例,并在到达下界(low=high)时,不再创建实例。[line 37-42]
我的问题是,主线程A何时才能知道线程B已经全部执行完毕。

以上为线程B代码


1楼2018-03-07 00:09回复
    面试几年啊?


    来自iPhone客户端2楼2018-03-07 00:16
    收起回复
      2025-08-20 07:33:17
      广告
      不感兴趣
      开通SVIP免广告
      join吧,a.会等b执行完吧


      IP属地:广东来自Android客户端5楼2018-03-07 00:44
      收起回复
        我不懂 gg


        IP属地:广东来自Android客户端8楼2018-03-07 01:13
        收起回复
          观察者模式?


          IP属地:浙江来自Android客户端9楼2018-03-07 07:33
          回复
            或者给排序的数组加个锁(分段锁)让主线程进行线程礼让,b完成时唤醒所有线程


            IP属地:浙江来自Android客户端10楼2018-03-07 07:39
            收起回复
              一年就问这么复杂的题目啊


              IP属地:湖南来自Android客户端11楼2018-03-07 07:42
              收起回复
                用多线程写排序,你直接对排序加锁不就得了


                IP属地:湖北12楼2018-03-07 09:22
                收起回复
                  2025-08-20 07:27:17
                  广告
                  不感兴趣
                  开通SVIP免广告


                  IP属地:湖北13楼2018-03-07 09:22
                  收起回复
                    有个有返回值的线程实现类:FutureTask,用get方法获取返回值会阻塞到这个线程执行完,


                    IP属地:广东14楼2018-03-07 09:54
                    收起回复
                      用callable,这个线程执行完毕之后有返回.


                      IP属地:湖南15楼2018-03-07 10:13
                      收起回复
                        pool.shutdown()
                        while(!pool.isterminated()){
                        Thread.yield()

                        finished


                        IP属地:广东来自iPhone客户端16楼2018-03-07 10:25
                        收起回复
                          1


                          IP属地:北京来自Android客户端17楼2018-03-07 10:46
                          回复