Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
->mikkelbm: Som jeg læser det, er man så nødt til i run()-metoden løbende at spørge til, om tråden skal afbrydes.
Men hvad gør man så, hvis man f.eks. anvender dynamisk class-loading, hvor man ønsker at afbryde f.eks. Class.forName("MinKlasse").newInstance()? I mit tilfælde foretager "MinKlasse" læsning og skrivning til eksterne filer, og det er denne del, jeg gerne vil afbryde.
Jeg tror, at jeg tænker lidt på, om man har adgang til MinKlasse/minmetode(), når MinKlasse ikke selv implementerer Runnable men kaldes fra en klasse, der gør det. Er det rent volapyk?
->arne_v: For så vidt Class.forName("MinKlasse") afvikles i tråden ThreadKlasse, er det så nødvendigt at lave en tråd i MinKlasse?
Eller anderledes udtrykt: Har jeg så at sige adgang til (mulighed for at stoppe) MinKlasse, selv om den ikke selv er en tråd, blot den afvikles i en anden klasse ThreadKlasse, som er en tråd?
->mikkelbm: Mit ønske er at stoppe eksekveringen af Class.forName("MinKlasse").newInstance(). Som Arne forklarer - hvis jeg forstår det rigtigt - er det muligt ved at bygge metoden setCont() ind i MinKlasse, idet denne metode sætter et flag, som den anden metode run() (eller: minmetode()) spørger på.
Da videre MinKlasse load'es dynamisk på runtime, kan setCont() ikke tilgås direkte men via reflection (Method, invoke etc.)
Hvad laver din "MinKlasse" ? Hvis den kører som en tråd, så skal du gøre som Arne skriver. Ellers burde du bare kunne nulstille referencen og så vil den blive garbagecollected.
->mikkelbm: MinKlasse skriver f.eks. en masse data til en fil, og jeg kan have brug for at afbryde denne undervejs. MinKlasse kører ikke umiddelbart som en tråd, men den afvikles i en klasse, som er en tråd, nemlig ThreadKlasse. Nulstilling af referencen kan derfor først ske, når jeg har afbrudt eksekveringen, hvortil jeg har brug for Arnes kodestump. Hvad jeg imidlertid ikke kan overskue er, om MinKlasse selv skal køre som en tråd (inde i tråden ThreadKlasse), eller om det er nok, at ThreadKlasse er en tråd, jf. mit spm. til Arne ovenfor.
->mikkelbm: Det er vel ikke som sådan afgørende, hvad MinKlasse laver. Pointen er blot, at den skal kunne afbrydes, i det den laver. I princippet kunne den blot indeholde en "dum" løkke, som skrev en masse tilfældig genereret tekst ud i en tekstfil.
Jeg vil da lige præcis mene at det er relevant hvad den laver. For hvis den kører i en løkke, så skal den afbrydes med en boolean som arne foreslår.
Hvis ikke den kører i en løkke er der vel ikke noget at afbryde? Medmindre den har metoder du fodrer med data. Og hvis det er tilfældet så er der jo ikke noget at stoppe i "MinKlasse".
->mikkelbm: Ja, hvis MinKlasse både læser og skriver data (det vil den typisk gøre), skal begge dele stoppes, og det sker ved at bryde ud af en løkke, når et flag sættes.
Man kan vel sige at den dynamiske læse/skrive klasse skal implementere et bestemt interface, som så har en close metode, som så skal lukke diverse input/output stream osv. Så når tråd klassen stopper, så kalder den close på den klasse den bruger.
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.