- Miniképernyős, VIA-s Epomaker billentyűzet jött a kábelmentes szegmensbe
- Különösen rendezett beltér hozható össze a Cooler Master új házában
- A középkorra és a pokolra is gondolt az új AMD Software
- Új gyártástechnológiai útitervvel állt elő a TSMC
- A Gigabyte is visszaveszi alaplapjainak alapértelmezett tuningját
Hirdetés
-
Olcsó 5G-s ajánlatot nyújt a Realme Indiának
ma Megérkezett a Realme C65 5G, az első készülék a MediaTek Dimensity 6300-zal.
-
A középkorra és a pokolra is gondolt az új AMD Software
ph A 24.4.1-es, WHQL aláírással rendelkező szoftvercsomag több hibát is javít.
-
Rossz üzlet az EV-kölcsönzés
it Küszködik az EV-kölcsönzés miatt a Hertz Global, még több EV-t adnak el.
Új hozzászólás Aktív témák
-
loszerafin
senior tag
Próbálkozom a thread-ekkel és elakadtam.
a run() metódusom szinkronizált, egy ciklusban a cnt mezőhöz hozzáad egyet, majd ki is von.
A main()-ben 500 msec-enként kiírom a cnt értékét. A kimenet hol 0, hol egy. Nyilván, a main() metódust futtató szál println-ja ''beüt'' a cnt-hez hozzáadó és abból kivonó utasítás közé. Hogy lehet ezt elkerülni?
class Counter1 {
static int cnt = 0;
static boolean end = false;
static class ModCounter implements Runnable {
public synchronized void run() {
while(!end){
cnt += 1;
cnt -= 1;
}
}
}
public static void main(String[] args)
throws InterruptedException{
ModCounter modc = new ModCounter();
Thread t1 = new Thread(modc);
t1.start();
for(int i=0; i<10; i++){
System.out.println(cnt);
Thread.sleep(500);
};
end = true;
t1.join();
System.out.println(cnt);
}
}
Kimenet:
0
1
1
0
0
1
1
1
0
1
0
Szeretném, ha csupa 0 jelenne meg.
Próbáltam a kiírást szinkronizálni:
synchronized (Counter1.class) {
System.out.println(cnt);
};
De semmi változás.
Előre is köszönöm
KL -
Eastman
őstag
Most találtam, ha valakit érdekel egy állás: [link]
mail: job@virgosystems.huhttps://logout.hu/tema/re_gerincserv_muteti_kezelese/keres.php?suser=Eastman ⮞ Műtét nélkül is lehet megoldás...
-
shev7
veterán
válasz loszerafin #851 üzenetére
nezd meg ezt:
class Main {
static int cnt = 0;
static boolean end = false;
static Object lock = new Object();
static class ModCounter extends Thread {
public void run() {
while(!end) {
synchronized (lock) {
cnt += 1;
System.out.println(cnt);
cnt -= 1;
}
}
}
}
public static void main(String[] args)
throws InterruptedException{
ModCounter modc = new ModCounter();
ModCounter modc2 = new ModCounter();
modc.start();
modc2.start();
Thread.sleep(500);
end = true;
}
}
[Szerkesztve]''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
loszerafin
senior tag
Köszönöm, hogy foglalkozol a témával.
Közben kitaláltam egy megoldást (egy oldallal tovább kellett olvasnom a könyvben a wait()-ig)
class Counter2 {
static int cnt = 0;
static boolean end = false;
static class ModCounter implements Runnable {
public void run() {
while(!end){
synchronized (this) {
cnt += 1;
cnt -= 1;
notify();
}
}
}
}
public static void main(String[] args)
throws InterruptedException{
ModCounter modc = new ModCounter();
Thread t1 = new Thread(modc);
t1.start();
for(int i=0; i<10; i++){
Thread.sleep(500);
synchronized (modc) {
modc.wait();
System.out.println(cnt);
};
};
end = true;
t1.join();
System.out.println(cnt);
}
} -
loszerafin
senior tag
Köszönöm, valóban jó megoldás egy lock objektum létrehozása:
class Counter3 {
static int cnt = 0;
static boolean end = false;
static Object lock = new Object();
static class ModCounter implements Runnable {
public void run() {
while(!end){
synchronized (lock) {
cnt += 1;
cnt -= 1;
}
}
}
}
public static void main(String[] args)
throws InterruptedException{
ModCounter modc = new ModCounter();
Thread t1 = new Thread(modc);
t1.start();
for(int i=0; i<10; i++){
Thread.sleep(500);
synchronized (lock) {
System.out.println(cnt);
};
};
end = true;
t1.join();
System.out.println(cnt);
}
} -
loszerafin
senior tag
válasz loszerafin #855 üzenetére
Még annyit hozzáteszek azok kedvéért, akik később olvassák ezt a topicot:
Azt hiszem nem szerencsés egy több szálon futó programban olyan ciklust futtatni, amiben nincs Thread.sleep(), mert így nem hagyunk időt másik szálaknak a bekapcsolódásra, ráadásul zabálja a processzort, szóval
valami ilyesmi jobb, mint ami a fenti kódjaimban látható:
while(!end){
synchronized (lock) {
cnt += 1;
cnt -= 1;
};
try {
Thread.sleep(10);
} catch (InterruptedException e) {}
} -
shev7
veterán
válasz loszerafin #856 üzenetére
mivel a program alapesetben mast is csinal, nem csak a lockolt teruleten tolti az idejet ez nem szokott problemat okozni, de a te peldadban tenyleg jol jon egy kis sleep.
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
loszerafin
senior tag
Ha jól értem a JVM-ek működését az olvasmányaim alapján, akkor nincs garantálva, hogy időosztásosan működjenek a JVM-ek. Azaz, ha azt akarom, hogy a többi szál is labdába rúghasson, kell sleep()-et tennem a hosszan futó ciklusaimba. Vagy tévedek?
Tehát nem a lock az érdekes itt, hanem hogy egy szál nem engedi futni a többit, mert nincs benne sleep és sose áll le. -
robisz
senior tag
válasz loszerafin #858 üzenetére
Ha jól értem a JVM-ek működését az olvasmányaim alapján, akkor nincs garantálva, hogy időosztásosan működjenek a JVM-ek. Azaz, ha azt akarom, hogy a többi szál is labdába rúghasson, kell sleep()-et tennem a hosszan futó ciklusaimba.
Igazából a yield() metódust találták ki megoldásként erre problémára, de sajnos
kínszenvedés a használata mert nagyon nem egyértelmű mikor kell meghívni.
(Valami olyasmit lehet elképzelni, hogy pörgetsz egy számlálót a ciklusodban és
minden 10-edik futáskor meghívod a yield()-et vagy valami hasonló)
Szerencsére azonban ez a probléma a ''való életben'' elég ritkán fordul elő,
hisz az ember általában olyan szálakat ír amelyek egyébként is blokkolnak.
Pl. mert egy socket-ről akarsz olvasni vagy vársz egy beérkező üzenetre... stb. -
loszerafin
senior tag
Igazából a yield() metódust találták ki megoldásként erre problémára, de sajnos
kínszenvedés a használata
Köszönöm, igaz, megnéztem még 1x. Azt írja a könyv, hogy a yield() átteszi a jelenleg futó szál állapotát runnable-be, ezáltal a scheduler választhat egy új szálat, amit futtatni fog.
Azonban nincs előírva, hogy a scheduler másik szálat válasszon, ezért lehet, hogy ugyanazt fogja futtatni, azaz előfordulhat, hogy a yield() tulajdonképpen nem csinált semmit.
Kicsit meg lehet spékelni az egészet a szálak prioritásával, de mivel a prioritást meg nem kötelező megvalósítania a JVM-eknek, kár a gőzért... -
Sianis
addikt
Sziasztok!
Hogyan tudom megoldani, hogy egy osztályon belül két különböző paraméterszignatúrájú konstruktor közül az egyik meghívja a másikat?
Sianis -
sekli
addikt
helo topic,
Ezen az oldalon ([link]) van egy jatekocska, amit javaban irtak, na amikor ezt megtalaltam, akkor gondoltam, hogy de jo egyszeru, biztos jo kicsi a gepigenye, de aztan, hogy task managerban nezem, a procit 30-50% korul hasznalja (3.0Ghz P4), es 30mega ramot eszik... hat kicsit csalodott voltam, mert azt hittem, hogy egy P1-en is elfut majd... ez normalis egyebkent, hogy egy ilyen alkalmazas, amiben lenyegeben csak nehany pontbol allo sokszogek maszkalnak ide-oda ilyen gepigenyes...? persze, lehet, hogy rosszul van megirva, azzal nem tudok mit csinalni, egyreszt mert egyaltalan nem ismerem a java-t, masreszt nem en csinaltam... Esetleg valahogy mashogy futtatva lehet csokkenteni az etvagyat? most JRE 1.6-ot hasznalok...., (a forumaban a program keszitoje ugyan azt irta az 1.6 megjelenesekor, hogy ezzel jobb, mint 1.5-tel volt...) -
loszerafin
senior tag
Sziasztok,
Kb. már tisztában vagyok a Java alapokkal, szerintetek hogyan tovább, mit tanuljak?
UML-t látom hasznosnak meg a Design Pattern-eket. Vagy esetleg mást?
Gondolkodtam a konkurrens programozás elméletén, ami jól jöhet a szálak írásakor, de ez talán csak később kellhet.
Azután itt van a unit tesztelés, javadoc, i18n.
Persze, gyakorlatot kellene szereznem, de nem akarok rossz (=gyenge minőségű) programokat írni, gyakorlás képpen sem.
Előre is köszönöm
KL -
robisz
senior tag
válasz loszerafin #865 üzenetére
Ha később komolyan akarsz Javazni, esetleg ilyen téren szeretnél dolgozni,
akkor egyet ajánlok: J2EE.
Ha a ''sima'' Java már elég jól megy, akkor mindenképp érdemes megismerkedni vele.
Az UML és a Design Pattern-ek ismerete mindig (de J2EE-hez különösen) jól jöhet! -
shev7
veterán
a j2ee-vel az a baj, hogy tanulni nagyon nehez. Az alapokat elsajatithatod, de elesben fogod igazan megtanulni. A masik kerdes, hogy ejb2, vagy ejb3. Ugye a 3 sokkal konnyebben kezelheto, de a szokas hatalma miatt a 2 meg nagyon sokaig hasznalatban marad.
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
loszerafin
senior tag
Köszönöm
KL -
Weier
csendes tag
Sziasztok!
Keresek valakit JDBC munkára.
Max pár óra alatt megcsinálható és nem ingyen kérem!
Akit érdekel, az írjon magánban. Sürgős! -
Fisha
őstag
válasz loszerafin #865 üzenetére
Velemenyem szerint elso korben jdbc, servletek jsp-k, aztan egy tetszoleges mvc framework. Persze ha az a cel, hogy a konnyen el tudj helyezkedni. Ilyen temakorben keresnek a legtobb embert. Aztan johetnek ejb-k egyebek.
Egyebkent maga az, hogy j2ee annyira tag fogalmkor, hogy nem igazan lehet azt mondani, hogy akkor en most j2ee-t tanulok. -
Fisha
őstag
Ja meg az lemaradt, hogy ha kerdesed vana fenti temakorokben, akkor szivesen segitek. A topicot nem mindig olvasom, szoval ha surgos, akkor privi.
-
-
loszerafin
senior tag
debug üzenetek
Gondoltam jó lenne pár debug üzenet, és erre kézenfekvő az assert-et használni, úgyhogy csináltam egy Log osztályt:
class Log {
static int Level = 6;
public static boolean log(int level, String s){
if (level>=Level) System.out.println(s);
return(true);
}
public static boolean dlog(int level, String s){
if (level>=Level) {
new Throwable().printStackTrace();
log(level,s);
};
return(true);
}
}
Ezt a programban így lehet használni:
assert Log.log(5,''itt vagyok'');
assert Log.dlog(7,''itt vagyok'');
A log csak az üzenetet írja ki, a dlog a stack-et is.
Van erre valami bejáratott út, vagy megfelelő ez?
Előre is köszönöm
KL -
Drizzt
nagyúr
Van egy frame-m, hiába csinálok rajta setSize-ot, nem változik meg a mérete, úgy rémlik, hogy még valami extra kéne ezek után a showon kívül, nem?
I am having fun staying poor.
-
loszerafin
senior tag
Én eléggé új vagyok a Javában, de a show az deprecated. setVisible(true) a menő 1.5 óta.
A setMinimumSize() beleszólhat a dologba.
Nálam awt-tal megy:
import java.awt.*;
import java.awt.event.*;
import javax.imageio.*;
import java.io.*;
import java.awt.image.*;
import java.util.*;
[...]
class MyFrame extends Frame implements Runnable{
[...]
MyFrame(){
[...]
setSize(100,100);
[...]
setVisible(true);
[...]
}
[...]
}
[Szerkesztve] -
robisz
senior tag
válasz loszerafin #875 üzenetére
Szia!
Logolásra a java.util.Logger osztály a megoldás (ez nem túl régen
került a Java-ba), vagy pedig a log4j csomag amit külön kell letölteni
és talán még az előbbinél is többen használják. Tudásban kb. ugyanaz a kettő. -
Drizzt
nagyúr
válasz loszerafin #877 üzenetére
Az volt a para, hogy a htm file bírálta felül. :S
Na más egyszerűbb kérdésem van. Appletet kell csinálni, írtam egy filet IntervalException.java néven, ahol van. Az importálásához kell még valami, hogy lássa? Elég idegesítő, hogy Unixon kell fejleszteni(ssh loginnal), így elég nehézkes, míg valamit kipróbálgtok...I am having fun staying poor.
-
robisz
senior tag
Az volt a para, hogy a htm file bírálta felül.
Így kell működnie, html-ből lehet beállítani az applet méretét.
A másik kérdésed nem pontosan értem, ha nem ugyabban a package-ben vannak
akkor kell importálni.
Ha a lefordított class-t nem találja a Java akkor meg fel kell venni a classpath-ba,
vagy applet esetén úgyis egy jar-ba kell csomagolni őket. -
Drizzt
nagyúr
Akkor a kérdés pontosan. Szóval van egy java fájlom, ami applet, s a htm megjeleníti. Kéne nekem egy exception leszármazott osztály intervalexception néven. Ha simán belerakom az eredeti javaba public class intervalexception extends exception, akkor azt írja ki, hogy ezt egy másik fájlban kellene definiálni. Na ekkor mit csináljak?
I am having fun staying poor.
-
shev7
veterán
rakd egy masik fajlba, es a ket java-t (az appletet meg az exception-t rakd jar-ba)
vagy ha csak az applet hasznalja az exception-t akkor legyen belso osztaly.''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
Drizzt
nagyúr
Csak az Applet használná. Belső osztály az mit takar?
public class IntervalException extends Exception{
public IntervalException(String msg){
super(msg);
}
}
Ezen mit kéne változtatni? Gondolom valamelyik osztályba, vagy egyébbe kellene ezt belerakni?I am having fun staying poor.
-
shev7
veterán
a mar letezo applet classon belul definialod az osztalod pl:
public class MyApplet extends Applet {
class IntervalException extends Exception {
}
}
itt egy leiras: [link]''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
Drizzt
nagyúr
Kösz, s egy másik kérdés: azt szeretném, hogy egy exceptiont dobjak, ha egy sztring nem ''V'', vagy ''D'', de ha egy if utáni feltétel részbe írnám őket or-ral összekapcsolva, akkor mindig azt mondja, hogy már korábban zárójelet vár. Mi lehet ilyenkor a megoldás? Néezegettm ezt-azt, de nem lettem sokkal okosabb... :S
I am having fun staying poor.
-
Louies
tag
Sziasztok! HELP!
lenne egy kérésem vagy kérdésem.
egy programot kellene öszehozni nekem . teljesen egyszerü annak aki járt órára , de én nem járok be javara. Shell rendezést kellene csinálni, ugy, hogy mondjuk az elején megadok 5számot. és azt rendezi. Semmi extra. Pseudoban már megcsináltam Cben is , de java ban nem megy. ha ebben tudna valaii segíteni esetleg.?''Okos ember leírja, ha érdekeset hall, a buta nem, mert azt hiszi, meg tudja jegyezni.''
-
sekli
addikt
válasz loszerafin #874 üzenetére
nem en szeretnek javitani, hanem, erdekel a velemenyetek, hogy normalis-e, hogy egy ilyen program ennyit terhel..., a keszito szerint 90%-ot a ''grafika'' teszi ki...
[link] az oldal kozepe fele van egy tablazat: Tacticat Sailing Fields ott vannak a gombok, hogy S1, L1, t4... , arra kell kattintani, hogy elinduljon... -
Sziasztok!
A legutóbbi win xp automatikus frissítésem óta néhány weboldal nem jön be, a többi pedig nagyon lassan.
A javascript console ilyet produkál:
[link]
Van valakinek ötlete mi lehet a gond?és mi a megoldás?
Köszönöm! -
loszerafin
senior tag
Hát, én nem tudok vitorlázni és ezt a programot valószínűleg elindítani sem. De ha el is indítanám se tudnám, mit hogy állítsak be rajta.
Bejött egy kép, bal felső sarokban feltehetően egy szélzsák meg kriksz-krakszok a képernyőn, de sehol egy ellenfél, akit le lehetne lőni ...
Ha most ehhez hozzáveszem, hogy mondjuk az emberek tudása a vitorlázásról (nagy átlagban) kb az enyémnek megfelelő szinten van és hogy az intelligenciám nem átlag alatti, akkor ez a fórum ennek a kérdésnek a megválaszolására nem alkalmas.
Miért nem írsz a játék fórumába?
A ''90%-ot a grafika teszi ki'' : ez sok minden lehet. A programkód 90%-a? a belefeccölt munka 90%-a? A futásidő 90%-a?
Ez egy szimulátor, és ha a hajókat tényleg a szél lökdösi, meg a vitorlákat lehet állítani (és még ki tudja mit) és többen is vagytok egyszerre (hálózatos a játék), korántsem gondolnám triviális feladatnak és még csak megbecsülni se tudom, milyen nehéz kiszámolni az egyes hajók adatait (pl. hely, irány, sebesség) és az algoritmus meddig fut.
Azt gondolom, próbáld ki egy gyengébb gépen, ha lassú, kérdezz a fejlesztőtől. -
Forest_roby
őstag
HI!
Ma írok java server oldali programozásból - még csak a nagyon alapokból, de mivel én soha nem tanultam java-t, ez így egy kicsit nehéz lesz(, ha nem inkább lehetetlen), nem tudom minek vettem fel ez az órát - egy kis segítséget kérnék.
Van egy ablak, benne egy táblázat, és a cellákba egy adatbázisból tölti be az adatokat.
Ez idáig elvileg működik.
A feladat az lenne, hogy ha módosítok egy cella tartalmát, akkor az adatbázisban is módosuljon az adott cellához tartozó érték.
Ebben tudnátok segíteni?
( ha kell tudok küldeni programot, annak akit érdekel )
Előre is köszönöm!
Forest-=Legyél Laza!=- __ ''Have you tried turning it off and on again?'' __ ''Is it definitely plugged in?'' /o\ :D:D
-
válasz loszerafin #893 üzenetére
Köszi!
Az xp-ben már írtam,de nem válaszolt senki.
Megpróbálom a firefox-ost. -
loszerafin
senior tag
válasz Forest_roby #894 üzenetére
És mi nem megy?
1. Server oldalon nem tudod módosítani az adatbázist? (SQL gondok/Java sql használat gondok/
2. Serverprogramod nem tudja elkapni az adatokat?
3. html Weboldaladból nem tudod elküldeni az adatokat? (form/ajax probléma)
4. Java appletből nem tudod elküldeni az adatokat a szerver felé?
Talán ezek segítenek:
1. [link]
3. [link]
3. [link]
[Szerkesztve] -
Forest_roby
őstag
válasz loszerafin #896 üzenetére
1órát késtél a válasszal!
Hogy mi nem megy?
Az idáig működő részeket se látom át (igazán)...
Innentől kezdve meg az egész gáz...
pl az adatmódosítást hogyan érzékeli a program(, vagy gombenyomásra update-eljen)?
az update megírása se igazán megy...
Nincsenek nagy problémáim, csak nem értem az egészet!
mod: de mostmár mindegy!
[Szerkesztve]-=Legyél Laza!=- __ ''Have you tried turning it off and on again?'' __ ''Is it definitely plugged in?'' /o\ :D:D
-
loszerafin
senior tag
válasz Forest_roby #897 üzenetére
Sajnálom, hogy késtem 1 órát, de úgy érzem, ha 1 héttel ezelőtt írok, az is késésben lenne.
Amit javaslok:
Egy gyors Java alapok:
http://java.sun.com/docs/books/tutorial/
(Erre 1 hét elég lehet, ha nagyon nekifekszel, 3 nap /napi 4 óra alvással/)
Learning the Java language, Essential java classes, Collections, Deployment
Ezután JDBC:
http://java.sun.com/docs/books/tutorial/jdbc/index.html
Majd ez (bár ez egy monstrum, úgyhogy szelektálnod kell, viszont én nem ismerem a Javat eléggé, hogy ebben segítsek)
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/
És nem árt némi AJAX ismeret (szerintem):
http://www.w3schools.com/ajax/default.asp
Ehhez persze JavaScript, css és html tudás is kell, amit szintén megszerezhetsz a w3schools oldalain. -
shev7
veterán
válasz loszerafin #899 üzenetére
errol irnal kicsit bovebben? mit ertesz azon, hogy eltunik, ha keszen vagy?
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Amazfit I T-REX 2 I GTS 3 I GTR 3 I GTR 3 Pro
- Új Latitude 7440 2-in-1, FHD+ IPS kihajtható érintő, i7-1365U, 32GB DDR5, 512GB NVMe, IR kamera, gar
- Beszámítás! GB H610M i5 13400F 32GB DDR4 1TB SSD RTX 3070Ti 8GB MONTECH AIR 1000 Lite Corsair 650W
- Xiaomi Instant Photo Printer 1S Set Bontatlan!
- Beszámítás! GB H610M i5 13400F 16GB DDR4 250GB SSD RTX 3070Ti 8GB MONTECH AIR 100 Lite Chieftec 700W