Készíts egy több szálon futó prímkereső programot. Minden számot csak egyszer teszteljünk prímségre.
Ehhez szükség lesz egy számláló objektumra (mint egy sorszám osztogató automata), melytől a szálak kéregetik a tesztelendő számokat.
Az első verzió írassa ki a prímeket. A második verzióban a szálak tegyék a megtalált prímeket egy közös, megosztott listába.
n
-re készíts az Executors.newFixedThreadPool(n)
hívás segítségével egy eszközt, amely egyszerre legfeljebb n
tevékenységet hajt végre n
szálon.
n
-re gyakran jó választás Runtime.getRuntime().availableProcessors()
, mivel a processzor ennél több feladatot úgysem tud párhuzamosan végrehajtani.execute()
metódusának át lehet adni egy lambdát, amelyet végrehajt (ha van szabad szál, rögtön, különben sorba áll).submit()
metódust kell használni. Az eredményt a submit()
visszatérési értékeként kapott Future
-ön a get()
metódus meghívásával lehet megkapni.Future
-jeik segítségével írd ki másodpercenként, hogy melyik van készen.n
szál mellett szükség lesz egy vezérlőre, ami kiosztja a feladatokat, és a szálak ennek jelzik, ha felszabadultak.