2016-04-01 45 views
3

Döngü için birkaç düzey yuva gerektiren oldukça karmaşık bir işlem var.Java 8 akış paraleli akışında akış

Eylemler, yalnızca belirli bir koşul kümesi için gerçekleştirilir. Başka bir deyişle:

for(){ 
    if(){ 
     for(){ 
      if(){ 
       //Something happens RIGHT HERE 
      } 
      //And maybe here 
     } 
    } 
} 

Hiçbir başka ifadeler, sadece bir katı kod yolu nesnelerinin farklı türleri bir demet yineleme.

Sorum şu: eğer bu mantığı akımlarla değiştireceksem (CPU'nun bu döngüyü tamamlamak için ne kadar işlem yapması gerektiğini düşünürsek, sürecin yolunun gitmesi gerektiğini düşünüyorum) ve içinde bir akışım var. Bir akış içinde akış (BWOOOMMMPPPPPPP INCEPTION NOISE) ve ben paralelstream() üst seviyeyi, bu üst seviyenin altındaki akışlar hala sırayla çalışacak, ama sadece kendi ilgili iş parçacığı içinde olacak?

cevap

1

Üst parallelStream()'un altındaki herhangi bir şey seri olarak yapılacaktır. List<List<>> gibi bir şeyle çalıştığınızı varsayalım, böylece üst seviyenin altında en üst seviyeye sahip olmayan yeni bir akış oluşturuyor olacaksınız.

+0

Doğru. Yöntem, argüman olarak iletilen ve daha sonra kullanmakta olduğum döngüler için yinelenen birden çok liste kullanır. Yine de iterasyonların potansiyel sayısını belirledikten sonra, paralel işlemenin esas olarak iterasyonlarımı yarım hatta hatta dördüncü olarak (2 ila 4 çekirdek kullanarak) kesebileceğinin farkına vardım; Elbette ölçeceğim, ama eminim ki paralellik buraya gitmenin yoludur. – TheFunk