|
| implements runnable Fra : Hans Hvelplund Odbor~ |
Dato : 11-12-00 21:23 |
|
Jeg har en klasse som implementerer runnable. Den vil jeg gerne lave sleep
på inde fra sig selv, sådan som vist på det efterfølgende:
public void run()
{
while (okToRun)
{
if (pack!=null)
{
connection.setPackage(pack);
}
try
{
sleep((int)(Math.random() * 100));
}
catch (InterruptedException e){}
}
}
det kan jeg sefølgelig ikke da jeg bruger
public class Transmitter implements Runnable
og ikke
public class Transmitter extends Thread
kan jeg gøre det på en smart måde uden at lave om til pub.....extends
Thread ?
Jeg tænkte at hver instans af Transmitter kunne indeholde en reference til
dens Thread
men hvis der nu var en nemmere måde at finde tråden på?
| |
Niels Thrane (11-12-2000)
| Kommentar Fra : Niels Thrane |
Dato : 11-12-00 22:31 |
|
Hmmm.. Det lyder lidt mærkeligt - man kan nemlig godt kalde sleep, selvom
din klasse bare implementerer Runnable.
- hvilken fejlmeddelelse får du?
--
Mvh.
Niels Thrane
| |
Hans Hvelplund Odbor~ (12-12-2000)
| Kommentar Fra : Hans Hvelplund Odbor~ |
Dato : 12-12-00 00:13 |
|
> - hvilken fejlmeddelelse får du?
Transmitter.java:45: cannot resolve symbol
symbol : method sleep (int)
location: class Transmitter
sleep((int)(Math.random() * 100));
^
1 error
som jeg skrev i et reply til mig selv kan jeg køre:
Thread.sleep((int)(Math.random() * 100))
det burde virke?
| |
Hans Hvelplund Odbor~ (11-12-2000)
| Kommentar Fra : Hans Hvelplund Odbor~ |
Dato : 11-12-00 23:05 |
|
kan jeg bruge
Thread.sleep((int)(Math.random() * 100));
?
| |
Dennis Thrysøe (12-12-2000)
| Kommentar Fra : Dennis Thrysøe |
Dato : 12-12-00 08:20 |
|
Prøv med
Thread.currentThread().sleep()
-dennis
Hans Hvelplund Odborg wrote:
> Jeg har en klasse som implementerer runnable. Den vil jeg gerne lave sleep
> på inde fra sig selv, sådan som vist på det efterfølgende:
> public void run()
> {
> while (okToRun)
> {
> if (pack!=null)
> {
> connection.setPackage(pack);
> }
> try
> {
> sleep((int)(Math.random() * 100));
> }
> catch (InterruptedException e){}
> }
> }
>
> det kan jeg sefølgelig ikke da jeg bruger
> public class Transmitter implements Runnable
> og ikke
> public class Transmitter extends Thread
> kan jeg gøre det på en smart måde uden at lave om til pub.....extends
> Thread ?
> Jeg tænkte at hver instans af Transmitter kunne indeholde en reference til
> dens Thread
> men hvis der nu var en nemmere måde at finde tråden på?
| |
Sven Nielsen (14-12-2000)
| Kommentar Fra : Sven Nielsen |
Dato : 14-12-00 19:04 |
|
In article <3A35D196.6040406@netnord.dk>, dt@netnord.dk says...
>
> Prøv med
> Thread.currentThread().sleep()
> -dennis
Nej, nej, nej.
Thread.sleep(int) er en statisk metode, så der er ikke brug for en
instans. Og det har Hans vist også selv fundet ud af.
Med venlig hilsen Sven.
| |
Ulrik Magnusson (14-12-2000)
| Kommentar Fra : Ulrik Magnusson |
Dato : 14-12-00 20:15 |
|
> > Prøv med
> > Thread.currentThread().sleep()
> > -dennis
> Nej, nej, nej.
> Thread.sleep(int) er en statisk metode, så der er ikke brug for en
> instans. Og det har Hans vist også selv fundet ud af.
Er der da forskel? (udover overhead i form af et ekstra metodekald)
Ulrik Magnusson
| |
Sven Nielsen (18-12-2000)
| Kommentar Fra : Sven Nielsen |
Dato : 18-12-00 20:44 |
|
In article <3A3998A9.6530B170@yahoo.com>, ulrikm@yahoo.com says...
> Er der da forskel? (udover overhead i form af et ekstra metodekald)
Tja, læse-forståelses venligheden bliver noget forringet. Og man kan
måske forvente, at det i en kommende version af java vil give en
oversættelsesfejl. Prøv f.eks. at referere til en statisk variabel via en
instans. Det er nemlig ikke længere tilladt i 1.3 (i hvert fald ikke som
labels i case sætninger), men det var det i 1.2.
Med venlig hilsen Sven.
| |
|
|