/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Savner forklaring til syntax-forståelse.
Fra : Jack L.


Dato : 07-01-07 16:52

Hej gruppe.

Jeg er ved at læse Suns egen tutorial til tråd-programmering, og har i
afsnittet om deadlock set følgende kode inde i main:-metoden:

new Thread(new Runnable() {
public void run() { alphonse.bow(gaston); }
}).start();

Med de dér { }-parenteser rundt omkring run() skulle man tro at der var en
metode inde i main-metode. Er det sådan man skal forstå dem, og vil det sige
at man kan definere metoder inde i en metode? Jeg kan heller ikke se
start-parenteset for ).start() i den sidste linie. Nogen som kan give en
forklaring, evt. ved at omskrive til mere "menneskelige" kode? :)

Hele kodestykket kan ses på:
http://java.sun.com/docs/books/tutorial/essential/concurrency/deadlock.html


--
Mvh. / Best regards,
Jack L.,
Copenhagen, EU


 
 
Johnnie Hougaard Nie~ (07-01-2007)
Kommentar
Fra : Johnnie Hougaard Nie~


Dato : 07-01-07 17:14

Jack L. wrote:
> new Thread(new Runnable() {
> public void run() { alphonse.bow(gaston); }
> }).start();

Det er en anonym indre klasse, der bliver defineret. Syntaksen er ikke
den mest intuitive....

Runnable er et inteface.

new Runnable() { ... } definerer og instantierer en klasse med default
constructor, og hvor klassen implementerer Runnable, dvs metoden run()

Denne instans bliver så brugt som som parameter til en constructor fra
Thread, og den nye Thread instans får sin start metode kaldt.

Og den laver jo så en ny tråd, og kører run metoden deri. Nettovirkingen
er altså at bow metode kaldet bliver kørt i en parallel tråd.

Jack L. (08-01-2007)
Kommentar
Fra : Jack L.


Dato : 08-01-07 23:42

Johnnie Hougaard Nielsen wrote:
> Jack L. wrote:
>> new Thread(new Runnable() {
>> public void run() { alphonse.bow(gaston); }
>> }).start();
>
> Det er en anonym indre klasse, der bliver defineret. Syntaksen er ikke
> den mest intuitive....
>
> Runnable er et inteface.
>
> new Runnable() { ... } definerer og instantierer en klasse med default
> constructor, og hvor klassen implementerer Runnable, dvs metoden run()
>
> Denne instans bliver så brugt som som parameter til en constructor fra
> Thread, og den nye Thread instans får sin start metode kaldt.
>
> Og den laver jo så en ny tråd, og kører run metoden deri.
> Nettovirkingen er altså at bow metode kaldet bliver kørt i en
> parallel tråd.

Hejsa. Tak for hjælpen, især for begrebet "anonym indre klasse" som jeg kan
søge mere om.

--
Mvh / Best regards,
Jack, Copenhagen

The email address is for real :)



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste