Witajcie,
Mam takie zadanie, że muszę do nowego wątku wrzucić klasę w której wykonują się dwie metody.. Jak to zrobić? Zadanie jest na wzór Javy a w c# niestety wątki działają zupełnie inaczej. Czy da się w ogóle to wykonać czy jestem zmuszony do tego by utworzyć drugi wątekdla drugiej metody?
0
0
Tak to zadanie wygląda w javie:
class Shared {
public void foo ( String threadName , long time ) {
System.out.println ( threadName +
" i s running foo ( ) f o r "+time+" ms , c t : " +
System.currentTimeMillis( ) ) ;
long t = System.currentTimeMillis( ) ;
while ( System.currentTimeMillis() - t < time ) {
Math.atan ( System.currentTimeMillis( ) ) ;
}
}
public void bar ( String threadName , long time ) {
System.out.println ( threadName +
" i s running bar ( ) f o r "+time+" ms , c t : " +
System.currentTimeMillis( ) ) ;
long t = System.currentTimeMillis( ) ;
while ( System.currentTimeMillis()-t < time ) {
Math . atan ( System.currentTimeMillis( ) ) ;
}
}
}
clas s ThreadA extends Thread {
Shared shared ;
ThreadA( Shared instance ) {
this.shared = instance ;
}
public void run ( ) {
shared.foo("A",5000) ;
shared.bar("A",1000) ;
System.out.println ( "A i s done" ) ;
}
}
class ThreadB extends Thread {
Shared shared ;
ThreadB(Shared instance) {
this.shared = instance ;
}
public void run ( ) {
shared.foo( "B" , 1000 );
shared.bar( "B" , 2000 );
System.out.println ( "B is done" );
}
}
0
Kto ci te zadanie kazał wykonać? Takie zadanie można wykonać na 100 sposobów, Ktoś ci napisze a ty i tak nic z tego nie zrozumiesz,
więc po co ci to ?
1
A nie możesz do wątku przekazać metody, która po prostu uruchomi sobie dwie metody jedna po drugiej? Przecież twoje run
w Javie właśnie to robią.
W stylu:
var t = new Thread(() => {
doFirstThing();
doSecondThing();
});
t.Start();