Avatar billede halfblind Nybegynder
06. september 2001 - 22:24 Der er 1 kommentar og
2 løsninger

Thread- igen

Jeg har lavet en tråd som har en integer som input, og nu skal jeg have en tråd som skal læse den først tråds værdig og have det som input.
Hvordan kan jeg gøre det?
Avatar billede christian-petersen Nybegynder
06. september 2001 - 23:16 #1
Du kan enten lade sin første tråd kalde en metode på din anden tråd med din integer som parameter, eller du kan lave en \"public int get()\" på den første, og så lade den anden tråd kalde denne metode. Husk at du blot kan betragte dine tråde som objekter. :-)
P.S.
Hvis der er flere tråde der skal ændre/læse fra den samme variable samtidig kan du overveje at synkronisere....
Avatar billede disky Nybegynder
07. september 2001 - 08:48 #2
man skal ikke overveje det, man skal synkronisere, ellers beder man om problemmer.

Men lav en public metode som går at du kan læse værdien. Hvis du vil være på den sikre side laver du denne metode synchronized. Problemmet er nemlig den at en integer bliver skrevet i 2 dele, en high del og en low del, og så kan der teoretisk opstå et task skift imellem, hvorved du får en forkert værdi.

Derfor lav den synchronized, så opstår dette problem ikke.

Hvis du mangler en bog om tråde i java, vil jeg klart foreslå denne her:
Taming Java Threads: http://www.bookshop.co.uk/ser/serdsp.asp?shop=20037&isbn=1893115100&DB=224

Forfatteren holdt et foredrag på JavaOne i år, og det var meget lærerigt.
Avatar billede christian-petersen Nybegynder
07. september 2001 - 08:55 #3
Giver disky ret i den generelle holdning vedr. synkronisering, dog med det forbehold at hvis det ikke er en værdi der ændres, men blot skal læses af mange tråde samtidigt, kan der være noget performance at hente ved ikke at synkronisere. Men er enig i at det i 99% af alle tilfælde er smartest at gøre det. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester