/ 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
Re: Multi-klient server
Fra : Jonas Swiatek


Dato : 09-04-01 12:48

Hey igen...

Hvad er det helt præsic der er fordelen ved ArrayList, frem for Vector?
Hastigheden, eller hvordan?

Der står dether med unsynhcronized, og jeg har en tråd, som løbene kalder
metoder, der kalder get, add og remove fra min vectorliste...
Når en tråd kalder en metode, forsætter tråden så lige efter, eller venter
den til metoden er færdig?

--
Jonas

Fra: "Niels Bech Nielsen" <nbn@logical.nospam.dk>
Emne: Re: Multi-klient server
Dato: 9. april 2001 08:18

Jamen, det var dog en overskuelig opgave så. Bare husk at DB roundtrips er
lidt iiriterende, og så meget du kan cache som muligt er en fordel.

Mht. collections.

Collection er et overordnet interface for alle collectioner. Generelt set er
der tre typer:
Set - Hvor elementer er unikke (matematisk mængde)
Map - Hvor et element parres med en nøgle (key-value)
List - Hvor elementer specificeres i en rækkefølge.

Lists og Sets har add metoder, mens Map typisk har put metoder.
Den klasse, der ligner Vector mest (samme type implementering) er ArrayList.
Kig i den, og følg evt. metoderne baglæns via AbstractList til
AbstractCollection. Klassen implementerer både Collection og List interfacet
(plus Cloneable og Serializable).

Klassen Collections (bemærk s'et i enden) er en støtte klase til de
forskellig Collection klasser. Den indeholder lidt søgning og sortering,
samtidig med at den definerer nogle constante typer, som EMPTY_LIST,
EMPTY_SET, og EMPTY_MAP som kan spare en at oprette tomme collectioner.

Jeg kan iøvrigt anbefale, at man lige løber følgende igennem:
http://www.javasoft.com/docs/books/tutorial/collections/index.html

En udemærket lille tutorial om dette.

/Niels

--
/Niels Bech Nielsen -- Logical
SCJ2P - ** Sun Certified Java 2 Programmer **

"Jonas Swiatek" <sxt@get2net.dk> skrev i en meddelelse
news:9aq86o$dtr$1@news.cybercity.dk...
> Serveren kommer nok maks op på en 1-300 connections, lige det første
stykke
> tid.
>
> Og de ting d transmiteres er f.eks: 1,move,3
> Eller: 1,talk,2,du stener!
> Alt dette bliver slipttet op i en StringTokenizer.
>
> Der skal for 80% af kommandoernes vedkommende, måske tjekkes noget i en
> database.
>
> Hvordan virker collections?
> Jeg kan hverken finde add, remove eller andre metoder, som minder om
> Vectoren?
>
> --
> Jonas
>
> "Niels Bech Nielsen" <nbn@logical.nospam.dk> skrev i en meddelelse
> news:mjdha9.2df.ln@java.logical.dk...
> > Hej,
> >
> > Nu har jeg set en række indlæg på dit spørgsmål, og vil da også gerne
give
> > en kommentar med på vejen (Når du endeligt er et "rigtigt" spørgsmål).
> >
> > Jeg har spekuleret lidt i forskellige scenarier, og kan ikke komme med
> noget
> > entydigt bud, når jeg ikke kender omfanget af data, der skal
kommunikeres
> og
> > graden af samtidighed systemet skal understøtte (for en eller flere
> > brugere).
> >
> > Du skal nok spekulere på om det skal være connection-oriented
(tcp/socket)
> > eller connection-less (udp/datagram), da det kan give store forskelle
mht
> > til workload.
> >
> > Du kan evt. også vælge en hybridløsning, hvor man etablere en socket
> mellem
> > klient og server, men også signalerer med datagrammer.
> >
> > Serveren kan holde mange connections i en enkelt connection-pool, hvor
> store
> > datamængder transmitteres eller kompleks request-respons kan behandles
> (som
> > f.eks. flerfaset commit etc), evt. med et acceptabelt overhead.
> >
> > Derudover kan klienten sende simple kommandoer via udp, som en server
kan
> > behandle væsentligt hurtigere (ved f.eks. at flytte kommandoen til en
> > central processing pool). For at sikre pålideligheden i udp kan man evt.
> ved
> > hvert request tilføje et sekvens nummer, og så retransmittere kommandoen
> et
> > par gange med lidt fall-back. Serveren skal så kun acceptere en ny
> kommando
> > fra en klient, hvis den har højere sekvens nummer (og man kan også
> > gennemskue tabte pakker, som evt kan retransmitteres vhja tcp).
> >
> > Det giver lidt mere arbejde, men bliver bedre performancemæssigt.
> >
> > Du skal iøvrigt passe på med at bruge Vector klassen. Det er en af de
> værste
> > collections vi har i java. Tag et kig på de nye collection libraries, og
> > vælg klasser derfra.
> >
> > Vector og Hashtable lider begge under, at de --altid-- er synkrone
udgaver
> > (og derved optager lang tid ved hver operation). Derudover tilbyder de
> > elementerne via en Enumeration, som desværre er indeterministisk over
for
> > ændringer i collectionen undervejs (Hvad sker der, hvis man sletter et
> > element samtidig med at man enumererer, og særligt det man måske har fat
i
> i
> > øjeblikket.
> >
> > De nye collections er altid usynkrone, men man kan få synkrone udgaver
ved
> > at bruge metoder fra "java.util.Collections" klassen (ikke at forveksle
> med
> > konceptet collection).
> > Derudover anvender de iteratorer, som tilbyder muligheden for remove()
> > undervejs, og kaster en ConcurrentModificationException hvis collection
> > ændres imellemtiden).
> >
> > Der findes i det nye collections biblioteket to andre klasser, der
> fungerer
> > lige som Vector og Hashtable i adfærd, de hedder ArrayList og HashMap.
> >
> > Håber de giver dig lidt at tænke på.
> >
> > /Niels Bech Nielsen
> >
> > "Jonas Swiatek" <sxt@get2net.dk> skrev i en meddelelse
> > news:9a4ben$1pdi$1@news.cybercity.dk...
> > > Hej.
> > >
> > > Jeg skal lave en server, som kan håndterer flere klienter af gang.
> > > Og, det skal være til et spil, så det er hovedsageligt kommandoer som
> > bliver
> > > sendt frem og tilbage.
> > >
> > > Jeg er lidt på bar bund, med hvordan jeg skal strukturerer det.
> > >
> > > Nogle der har et bud, eller et eksempel?
> > >
> > > --
> > > Jonas
> > >
> > >
> >
> >
>
>





 
 
Dennis Thrysøe (09-04-2001)
Kommentar
Fra : Dennis Thrysøe


Dato : 09-04-01 13:58

For en vector er der kun en tråd der får lov at opdatere af gangen.

-dennis

Jonas Swiatek wrote:

> Hey igen...
>
> Hvad er det helt præsic der er fordelen ved ArrayList, frem for Vector?
> Hastigheden, eller hvordan?
>
> Der står dether med unsynhcronized, og jeg har en tråd, som løbene kalder
> metoder, der kalder get, add og remove fra min vectorliste...
> Når en tråd kalder en metode, forsætter tråden så lige efter, eller venter
> den til metoden er færdig?
>


Niels Bech Nielsen (09-04-2001)
Kommentar
Fra : Niels Bech Nielsen


Dato : 09-04-01 14:02

Hvis en tråd kalder en metode, ekskverer tråden denne metode, returnerer og
fortsætter.

Problemerne starter, hvis der kører to tråde samtidig og de tilgår nogle
fælles data.
Midt i udførslen af en tråd, afbrydes denne og en anden tråd får lov til at
fortsætte. Hvis de tilfældigvis arbejder på samme data samtidig kan der
optræde "race-condition".

Forestil dig to tråde, der eksekverer tre linier (meget simpelt scenario,
men ok). myClass er en reference til samme objekt for de to tråde.

Precondition: myClass.getAnInt() = 4

Tråd_1.doSomething() { Tråd_2.doSomething() {
int a = myClass.getAnInt(); int b =
myClass.getAnInt();
a = a+1; b = b-1;
myClass.setAnInt(a); myClass.setAnInt(b);
} }

Hvad er myClass.getAnInt() ??

Prøv samtlige kombinationer af afvikling, og se hvilke resultater du får. Du
skulle gerne kunne få 3, 4, og 5, hvoraf 4 burde have været det logisk
rigtige result (4+1-1 = 4).

Hvis man ikke vil have nogle tråde til at lave noget sådant, vil kan typisk
gøre metoderne synkrone. Dvs. at hvis en tråd er inde i doSomething(), vil
en anden tråd ikke få lov, før den første tråd er færdig. Det betyder reelt
set, at tråd 2 må vente lidt, men til gengæld undgåes "race conditions".

Hvis du kun har 1 tråd, som afvikler metoder på en Vector/ArrayList er der
ikke behov for synkronisering. Hvis du har mere end 1 tråd, skal du være
meget opmærksom på hvordan det evt. kan gå galt (Det er i orden fx, hvis de
andre tråde kun læser størrelsen eller sådan noget). Derfor som
tommelfingerregel. Er der kun en tråd, som tilgår denne Collection, brug en
ArrayList (ikke synkron = hurtigere). Er der mere end en tråd, brug en
Vector (synkron = robust). Bemærk, at det kun er visse former for
race-conditions der umiddelbart undgåes på denne måde. Multi-trådet
applikationer er altid "svære" at lave ordentligt.

/Niels

--
/Niels Bech Nielsen -- Logical
SCJ2P - ** Sun Certified Java 2 Programmer **

"Jonas Swiatek" <sxt@get2net.dk> skrev i en meddelelse
news:3ad1a135$0$5728$4d4eb98e@news.dk.uu.net...
> Hey igen...
>
> Hvad er det helt præsic der er fordelen ved ArrayList, frem for Vector?
> Hastigheden, eller hvordan?
>
> Der står dether med unsynhcronized, og jeg har en tråd, som løbene kalder
> metoder, der kalder get, add og remove fra min vectorliste...
> Når en tråd kalder en metode, forsætter tråden så lige efter, eller venter
> den til metoden er færdig?
>
> --
> Jonas
>
> Fra: "Niels Bech Nielsen" <nbn@logical.nospam.dk>
> Emne: Re: Multi-klient server
> Dato: 9. april 2001 08:18
>
> Jamen, det var dog en overskuelig opgave så. Bare husk at DB roundtrips er
> lidt iiriterende, og så meget du kan cache som muligt er en fordel.
>
> Mht. collections.
>
> Collection er et overordnet interface for alle collectioner. Generelt set
er
> der tre typer:
> Set - Hvor elementer er unikke (matematisk mængde)
> Map - Hvor et element parres med en nøgle (key-value)
> List - Hvor elementer specificeres i en rækkefølge.
>
> Lists og Sets har add metoder, mens Map typisk har put metoder.
> Den klasse, der ligner Vector mest (samme type implementering) er
ArrayList.
> Kig i den, og følg evt. metoderne baglæns via AbstractList til
> AbstractCollection. Klassen implementerer både Collection og List
interfacet
> (plus Cloneable og Serializable).
>
> Klassen Collections (bemærk s'et i enden) er en støtte klase til de
> forskellig Collection klasser. Den indeholder lidt søgning og sortering,
> samtidig med at den definerer nogle constante typer, som EMPTY_LIST,
> EMPTY_SET, og EMPTY_MAP som kan spare en at oprette tomme collectioner.
>
> Jeg kan iøvrigt anbefale, at man lige løber følgende igennem:
> http://www.javasoft.com/docs/books/tutorial/collections/index.html
>
> En udemærket lille tutorial om dette.
>
> /Niels
>
> --
> /Niels Bech Nielsen -- Logical
> SCJ2P - ** Sun Certified Java 2 Programmer **
>
> "Jonas Swiatek" <sxt@get2net.dk> skrev i en meddelelse
> news:9aq86o$dtr$1@news.cybercity.dk...
> > Serveren kommer nok maks op på en 1-300 connections, lige det første
> stykke
> > tid.
> >
> > Og de ting d transmiteres er f.eks: 1,move,3
> > Eller: 1,talk,2,du stener!
> > Alt dette bliver slipttet op i en StringTokenizer.
> >
> > Der skal for 80% af kommandoernes vedkommende, måske tjekkes noget i en
> > database.
> >
> > Hvordan virker collections?
> > Jeg kan hverken finde add, remove eller andre metoder, som minder om
> > Vectoren?
> >
> > --
> > Jonas
> >
> > "Niels Bech Nielsen" <nbn@logical.nospam.dk> skrev i en meddelelse
> > news:mjdha9.2df.ln@java.logical.dk...
> > > Hej,
> > >
> > > Nu har jeg set en række indlæg på dit spørgsmål, og vil da også gerne
> give
> > > en kommentar med på vejen (Når du endeligt er et "rigtigt" spørgsmål).
> > >
> > > Jeg har spekuleret lidt i forskellige scenarier, og kan ikke komme med
> > noget
> > > entydigt bud, når jeg ikke kender omfanget af data, der skal
> kommunikeres
> > og
> > > graden af samtidighed systemet skal understøtte (for en eller flere
> > > brugere).
> > >
> > > Du skal nok spekulere på om det skal være connection-oriented
> (tcp/socket)
> > > eller connection-less (udp/datagram), da det kan give store forskelle
> mht
> > > til workload.
> > >
> > > Du kan evt. også vælge en hybridløsning, hvor man etablere en socket
> > mellem
> > > klient og server, men også signalerer med datagrammer.
> > >
> > > Serveren kan holde mange connections i en enkelt connection-pool, hvor
> > store
> > > datamængder transmitteres eller kompleks request-respons kan behandles
> > (som
> > > f.eks. flerfaset commit etc), evt. med et acceptabelt overhead.
> > >
> > > Derudover kan klienten sende simple kommandoer via udp, som en server
> kan
> > > behandle væsentligt hurtigere (ved f.eks. at flytte kommandoen til en
> > > central processing pool). For at sikre pålideligheden i udp kan man
evt.
> > ved
> > > hvert request tilføje et sekvens nummer, og så retransmittere
kommandoen
> > et
> > > par gange med lidt fall-back. Serveren skal så kun acceptere en ny
> > kommando
> > > fra en klient, hvis den har højere sekvens nummer (og man kan også
> > > gennemskue tabte pakker, som evt kan retransmitteres vhja tcp).
> > >
> > > Det giver lidt mere arbejde, men bliver bedre performancemæssigt.
> > >
> > > Du skal iøvrigt passe på med at bruge Vector klassen. Det er en af de
> > værste
> > > collections vi har i java. Tag et kig på de nye collection libraries,
og
> > > vælg klasser derfra.
> > >
> > > Vector og Hashtable lider begge under, at de --altid-- er synkrone
> udgaver
> > > (og derved optager lang tid ved hver operation). Derudover tilbyder de
> > > elementerne via en Enumeration, som desværre er indeterministisk over
> for
> > > ændringer i collectionen undervejs (Hvad sker der, hvis man sletter et
> > > element samtidig med at man enumererer, og særligt det man måske har
fat
> i
> > i
> > > øjeblikket.
> > >
> > > De nye collections er altid usynkrone, men man kan få synkrone udgaver
> ved
> > > at bruge metoder fra "java.util.Collections" klassen (ikke at
forveksle
> > med
> > > konceptet collection).
> > > Derudover anvender de iteratorer, som tilbyder muligheden for remove()
> > > undervejs, og kaster en ConcurrentModificationException hvis
collection
> > > ændres imellemtiden).
> > >
> > > Der findes i det nye collections biblioteket to andre klasser, der
> > fungerer
> > > lige som Vector og Hashtable i adfærd, de hedder ArrayList og HashMap.
> > >
> > > Håber de giver dig lidt at tænke på.
> > >
> > > /Niels Bech Nielsen
> > >
> > > "Jonas Swiatek" <sxt@get2net.dk> skrev i en meddelelse
> > > news:9a4ben$1pdi$1@news.cybercity.dk...
> > > > Hej.
> > > >
> > > > Jeg skal lave en server, som kan håndterer flere klienter af gang.
> > > > Og, det skal være til et spil, så det er hovedsageligt kommandoer
som
> > > bliver
> > > > sendt frem og tilbage.
> > > >
> > > > Jeg er lidt på bar bund, med hvordan jeg skal strukturerer det.
> > > >
> > > > Nogle der har et bud, eller et eksempel?
> > > >
> > > > --
> > > > Jonas
> > > >
> > > >
> > >
> > >
> >
> >
>
>
>
>



Lars (10-04-2001)
Kommentar
Fra : Lars


Dato : 10-04-01 16:50

Bemærk at der i Collections-klassen er static metoder til at wrappe Lists
mv., så de bliver synkroniseret - i stil med:

ArrayList myList = Collections.synchronizedList(new ArrayList);

Dette giver en synkroniseret ArrayList og som - såvidt jeg ved - er
hurtigere end Vector.

/Lars

"Niels Bech Nielsen" <nbn@logical.nospam.dk> skrev i en meddelelse
news:ovbsa9.jte.ln@java.logical.dk...
> Hvis en tråd kalder en metode, ekskverer tråden denne metode, returnerer
og
> fortsætter.
>
> Problemerne starter, hvis der kører to tråde samtidig og de tilgår nogle
> fælles data.
> Midt i udførslen af en tråd, afbrydes denne og en anden tråd får lov til
at
> fortsætte. Hvis de tilfældigvis arbejder på samme data samtidig kan der
> optræde "race-condition".
>
> Forestil dig to tråde, der eksekverer tre linier (meget simpelt scenario,
> men ok). myClass er en reference til samme objekt for de to tråde.
>
> Precondition: myClass.getAnInt() = 4
>
> Tråd_1.doSomething() { Tråd_2.doSomething() {
> int a = myClass.getAnInt(); int b =
> myClass.getAnInt();
> a = a+1; b = b-1;
> myClass.setAnInt(a); myClass.setAnInt(b);
> } }
>
> Hvad er myClass.getAnInt() ??
>
> Prøv samtlige kombinationer af afvikling, og se hvilke resultater du får.
Du
> skulle gerne kunne få 3, 4, og 5, hvoraf 4 burde have været det logisk
> rigtige result (4+1-1 = 4).
>
> Hvis man ikke vil have nogle tråde til at lave noget sådant, vil kan
typisk
> gøre metoderne synkrone. Dvs. at hvis en tråd er inde i doSomething(), vil
> en anden tråd ikke få lov, før den første tråd er færdig. Det betyder
reelt
> set, at tråd 2 må vente lidt, men til gengæld undgåes "race conditions".
>
> Hvis du kun har 1 tråd, som afvikler metoder på en Vector/ArrayList er der
> ikke behov for synkronisering. Hvis du har mere end 1 tråd, skal du være
> meget opmærksom på hvordan det evt. kan gå galt (Det er i orden fx, hvis
de
> andre tråde kun læser størrelsen eller sådan noget). Derfor som
> tommelfingerregel. Er der kun en tråd, som tilgår denne Collection, brug
en
> ArrayList (ikke synkron = hurtigere). Er der mere end en tråd, brug en
> Vector (synkron = robust). Bemærk, at det kun er visse former for
> race-conditions der umiddelbart undgåes på denne måde. Multi-trådet
> applikationer er altid "svære" at lave ordentligt.
>
> /Niels
>
> --
> /Niels Bech Nielsen -- Logical
> SCJ2P - ** Sun Certified Java 2 Programmer **
>
> "Jonas Swiatek" <sxt@get2net.dk> skrev i en meddelelse
> news:3ad1a135$0$5728$4d4eb98e@news.dk.uu.net...
> > Hey igen...
> >
> > Hvad er det helt præsic der er fordelen ved ArrayList, frem for Vector?
> > Hastigheden, eller hvordan?
> >
> > Der står dether med unsynhcronized, og jeg har en tråd, som løbene
kalder
> > metoder, der kalder get, add og remove fra min vectorliste...
> > Når en tråd kalder en metode, forsætter tråden så lige efter, eller
venter
> > den til metoden er færdig?
> >
> > --
> > Jonas
> >
> > Fra: "Niels Bech Nielsen" <nbn@logical.nospam.dk>
> > Emne: Re: Multi-klient server
> > Dato: 9. april 2001 08:18
> >
> > Jamen, det var dog en overskuelig opgave så. Bare husk at DB roundtrips
er
> > lidt iiriterende, og så meget du kan cache som muligt er en fordel.
> >
> > Mht. collections.
> >
> > Collection er et overordnet interface for alle collectioner. Generelt
set
> er
> > der tre typer:
> > Set - Hvor elementer er unikke (matematisk mængde)
> > Map - Hvor et element parres med en nøgle (key-value)
> > List - Hvor elementer specificeres i en rækkefølge.
> >
> > Lists og Sets har add metoder, mens Map typisk har put metoder.
> > Den klasse, der ligner Vector mest (samme type implementering) er
> ArrayList.
> > Kig i den, og følg evt. metoderne baglæns via AbstractList til
> > AbstractCollection. Klassen implementerer både Collection og List
> interfacet
> > (plus Cloneable og Serializable).
> >
> > Klassen Collections (bemærk s'et i enden) er en støtte klase til de
> > forskellig Collection klasser. Den indeholder lidt søgning og sortering,
> > samtidig med at den definerer nogle constante typer, som EMPTY_LIST,
> > EMPTY_SET, og EMPTY_MAP som kan spare en at oprette tomme collectioner.
> >
> > Jeg kan iøvrigt anbefale, at man lige løber følgende igennem:
> > http://www.javasoft.com/docs/books/tutorial/collections/index.html
> >
> > En udemærket lille tutorial om dette.
> >
> > /Niels
> >
> > --
> > /Niels Bech Nielsen -- Logical
> > SCJ2P - ** Sun Certified Java 2 Programmer **
> >
> > "Jonas Swiatek" <sxt@get2net.dk> skrev i en meddelelse
> > news:9aq86o$dtr$1@news.cybercity.dk...
> > > Serveren kommer nok maks op på en 1-300 connections, lige det første
> > stykke
> > > tid.
> > >
> > > Og de ting d transmiteres er f.eks: 1,move,3
> > > Eller: 1,talk,2,du stener!
> > > Alt dette bliver slipttet op i en StringTokenizer.
> > >
> > > Der skal for 80% af kommandoernes vedkommende, måske tjekkes noget i
en
> > > database.
> > >
> > > Hvordan virker collections?
> > > Jeg kan hverken finde add, remove eller andre metoder, som minder om
> > > Vectoren?
> > >
> > > --
> > > Jonas
> > >
> > > "Niels Bech Nielsen" <nbn@logical.nospam.dk> skrev i en meddelelse
> > > news:mjdha9.2df.ln@java.logical.dk...
> > > > Hej,
> > > >
> > > > Nu har jeg set en række indlæg på dit spørgsmål, og vil da også
gerne
> > give
> > > > en kommentar med på vejen (Når du endeligt er et "rigtigt"
spørgsmål).
> > > >
> > > > Jeg har spekuleret lidt i forskellige scenarier, og kan ikke komme
med
> > > noget
> > > > entydigt bud, når jeg ikke kender omfanget af data, der skal
> > kommunikeres
> > > og
> > > > graden af samtidighed systemet skal understøtte (for en eller flere
> > > > brugere).
> > > >
> > > > Du skal nok spekulere på om det skal være connection-oriented
> > (tcp/socket)
> > > > eller connection-less (udp/datagram), da det kan give store
forskelle
> > mht
> > > > til workload.
> > > >
> > > > Du kan evt. også vælge en hybridløsning, hvor man etablere en socket
> > > mellem
> > > > klient og server, men også signalerer med datagrammer.
> > > >
> > > > Serveren kan holde mange connections i en enkelt connection-pool,
hvor
> > > store
> > > > datamængder transmitteres eller kompleks request-respons kan
behandles
> > > (som
> > > > f.eks. flerfaset commit etc), evt. med et acceptabelt overhead.
> > > >
> > > > Derudover kan klienten sende simple kommandoer via udp, som en
server
> > kan
> > > > behandle væsentligt hurtigere (ved f.eks. at flytte kommandoen til
en
> > > > central processing pool). For at sikre pålideligheden i udp kan man
> evt.
> > > ved
> > > > hvert request tilføje et sekvens nummer, og så retransmittere
> kommandoen
> > > et
> > > > par gange med lidt fall-back. Serveren skal så kun acceptere en ny
> > > kommando
> > > > fra en klient, hvis den har højere sekvens nummer (og man kan også
> > > > gennemskue tabte pakker, som evt kan retransmitteres vhja tcp).
> > > >
> > > > Det giver lidt mere arbejde, men bliver bedre performancemæssigt.
> > > >
> > > > Du skal iøvrigt passe på med at bruge Vector klassen. Det er en af
de
> > > værste
> > > > collections vi har i java. Tag et kig på de nye collection
libraries,
> og
> > > > vælg klasser derfra.
> > > >
> > > > Vector og Hashtable lider begge under, at de --altid-- er synkrone
> > udgaver
> > > > (og derved optager lang tid ved hver operation). Derudover tilbyder
de
> > > > elementerne via en Enumeration, som desværre er indeterministisk
over
> > for
> > > > ændringer i collectionen undervejs (Hvad sker der, hvis man sletter
et
> > > > element samtidig med at man enumererer, og særligt det man måske har
> fat
> > i
> > > i
> > > > øjeblikket.
> > > >
> > > > De nye collections er altid usynkrone, men man kan få synkrone
udgaver
> > ved
> > > > at bruge metoder fra "java.util.Collections" klassen (ikke at
> forveksle
> > > med
> > > > konceptet collection).
> > > > Derudover anvender de iteratorer, som tilbyder muligheden for
remove()
> > > > undervejs, og kaster en ConcurrentModificationException hvis
> collection
> > > > ændres imellemtiden).
> > > >
> > > > Der findes i det nye collections biblioteket to andre klasser, der
> > > fungerer
> > > > lige som Vector og Hashtable i adfærd, de hedder ArrayList og
HashMap.
> > > >
> > > > Håber de giver dig lidt at tænke på.
> > > >
> > > > /Niels Bech Nielsen
> > > >
> > > > "Jonas Swiatek" <sxt@get2net.dk> skrev i en meddelelse
> > > > news:9a4ben$1pdi$1@news.cybercity.dk...
> > > > > Hej.
> > > > >
> > > > > Jeg skal lave en server, som kan håndterer flere klienter af gang.
> > > > > Og, det skal være til et spil, så det er hovedsageligt kommandoer
> som
> > > > bliver
> > > > > sendt frem og tilbage.
> > > > >
> > > > > Jeg er lidt på bar bund, med hvordan jeg skal strukturerer det.
> > > > >
> > > > > Nogle der har et bud, eller et eksempel?
> > > > >
> > > > > --
> > > > > Jonas
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
> >
> >
>
>



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

Månedens bedste
Årets bedste
Sidste års bedste