Wątki - basen wątków

0

Dzień dobry;
Piszę projekt do obliczania całki metodą trapezów na wątkach. Tworzę w pętli n wątków i w innej pętli m obiektów które chcę rozdzielić między wątki. Jak takie coś zaimplementować ? Chodzi mi o sam algorytm. żeby po skończeniu jednego zadania wątek brał nowy obiekt( nie obliczony ) i obliczał

0

To mi wygląda na problem producenta i konsumenta. Przykładów w sieci na pęczki.

0
  1. PULA wątków a nie basen...
  2. Nie, to nie są producenci i konsumenci. Problem jest dużo łatwiejszy. To jest zwykły przykład na wykorzystanie synchronizowanej kolejki. Tworzysz sobie kolejkę z zadaniami to wykonania a następnie tworzysz wątki które wyciągają z tej kolejki kolejne zadania do wykonania. Nie widzę tu żadnego problemu.
0

Napisałem taki kod:
Da się w ten sposób przypisać zadania ?

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication2;

import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;


/**
 *
 * @author Ferno
 */
public class JavaApplication2 {

    /**
     * @param args the command line arguments
     */
    
    static int pole;
    
     public static void podzielNaWatki(double xp, double xk,int n,int liczbawatkow)
     {
      
        Oblicz oblicz[]=new Oblicz[n];
        Lock  obl[] = new Lock[liczbawatkow];
        Thread[] watek = new Thread[liczbawatkow];
        double dlprzedzialu = (xk-xp)/n;
        int j,i;
        for(i=0;i<n;i++)
        {           
            oblicz[i]=new Oblicz(xp,xp+dlprzedzialu);
            System.out.println(xp+"   "+(xp+dlprzedzialu));
            xp=xp+dlprzedzialu;
        }
       for(i=0;i<n;i+=liczbawatkow)
       {
           for(j=0;j<liczbawatkow;j++)
           {          
            watek[j] = new Thread(oblicz[i+j]);
            watek[j].start();
            pole+=oblicz[i+j].getPole();
           }
       }
    }
    public static void main(String[] args) 
    {
        // TODO code application logic here
        
        double xp = -5;
        double xk = 5;
        int n = 10;
        int ileWatkow = 3;
        podzielNaWatki(xp, xk, n, ileWatkow);
        System.out.println("koniec watkow:\t");

    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1