- Hozd magaddal költözéskor a chatbotod!
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Milyen okostelefont vegyek?
- Apple iPhone SE (2020) - életképes alternatíva
- iPhone topik
- Olcsón ad sokat, de a minősége... Kukirin G2 Ultra teszt
- Xiaomi 15T Pro - a téma nincs lezárva
- Fotók, videók mobillal
- Apple iPhone 17 Pro Max – fennsík
- Redmi 15A néven érkezett a Poco C85x újracsomagolt változata
Új hozzászólás Aktív témák
-
Szmeby
tag
Ha egy taskot küldesz be, akkor ezt szépen időzítve hajtja végre.
Közelítsük meg empirikus úton:
service.scheduleWithFixedDelay(task, 500, 1000, TimeUnit.MILLISECONDS);Szerintem első körben töröld azt az i++; sort a ciklusod közepéből, csak zavar.
Majd vedd le a max értékét 1-re, hogy lásd, mit csinál az executor 1 taskkal.
Fél másodpercet vár, majd 1 másodpercenként meglöki ugyanazt a taskot.Ha a max értékét felhúzzuk 2-re, akkor egyértelművé válik, mi történik. A két task azonnal bekerül az executorba, mindkettő vár fél másodpercet, majd egymás mellett elindulnak. És persze az executor mindkettőt 1 másodpercenként meglöki újra, továbbra is egymás mellett futnak, hiszen ugyanakkor, ugyanolyan időzítéssel készültek el.
Ha a pool méretét nem a procik száma alapján határozod meg, hanem lehúzod 1-re, majd a max értékét felnyomod 10-re, akkor is úgy tűnik, mintha egyszerre hajtódnának végre. Valójában csak 1 szálon teszik egymás után, de a task nem csinál semmit, így villámgyorsan megtörténik, az időzítésük ugyanaz, tehát továbbra is egymáshoz nagyon közeli időpontban fognak megfutni.
Megteheted azt, hogy
service.scheduleWithFixedDelay(task, i * 200, max * 200, TimeUnit.MILLISECONDS);, de lehet erre szofisztikáltabb megoldás is. Mivel ez esetben ismerned kell azt, hogy összesen hány taszkot bízol a service-re, ami nem feltétlenül ismert az első taszk indításakor.
Nem vagyok otthon ebben a szálkésleltetésben, de csak van rá valami megoldás. A többi metódusát már nézted? 3rd-party library-ket?Jobban belegondolva, nem biztos, hogy ez ennyire egyértelmű, mert a magok száma borítja a dolgot. Egy egymagos gépen evidens. De egy 4 magos gépen, 4 szálon futtatva mit vársz tőle? 4 szál párhuzamosan futtat 1-1 taskot, majd x idő múlva indulna újabb 4 task? Mi van, ha a 4-ből 1 túl hosszú, és jönne a következő kör? Olyankor csak 3 új szál induljon? Vagy egy se, és 1 kör kimarad? Ha minden egyes taskot x idővel eltolva indítanál, akkor mi értelme több szálat használni? Sőt extrém hosszú taskoknál ugyanúgy előjöhet a fentihez hasonló probléma. Vagy olyankor nem kell várni, azonnal induljon a következő task, amíg van szabad szál?
Legrosszabb esetben csinálhatsz egy custom executorService implementációt.

Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- 15.6-os 7.gen i5, Dell Latitude E5580 notebook olcsón!!!AkciÓÓ!
- Corsair Carbide Series 100R leárazás! AkciÓÓ!
- ÚJ HP EliteBook 6 G1a Ryzen 5 PRO 230 4.9GHz 32GB DDR5 1TB FHD+ 16:10 már jobbik kijelző, gar 2028
- Kingston HyperX Fury DDR4 16GB ram
- A legnagyobb FÉLÁRON!!! Samsung S9 ultra 14.6"-os tablet! AkciÓÓÓ
- 187 - Lenovo LOQ (15IRX10) - Intel Core i7-13650HX, RTX 5070 (ELKELT)
- Surface 4 - 15" 2496 x 1664 ~2k touch, i7-1185G7, 16GB RAM, SSD, jó akku, számla, 6 hó gar
- ÚRIS10!!! RAMÁRON! LEGION 5 i7-13650HX 32GB RAM 1000GB SSD RTX 5070 8GB
- MSI Modern 15 Ryzen 7 7730U 16 GB RAM 512 GB SSD FHD IPS
- 27% - Acer CBA272H VA Monitor! 1920 1080 / 100Hz / 4ms / FreeSync
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


