ciao a tutti come faccio in questo programma, a passare il riferimento all'ogg al thread?
codice:class mainth{ public static void main(String args[]){ ogg o = new ogg(); Runnable r = new th(); Thread t = new Thread(r); t.start(); } }
ciao a tutti come faccio in questo programma, a passare il riferimento all'ogg al thread?
codice:class mainth{ public static void main(String args[]){ ogg o = new ogg(); Runnable r = new th(); Thread t = new Thread(r); t.start(); } }
cosi non va bene...th.prendiOggetto(o);![]()
Creati una classe che estenda Thread, no?
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Linguaggio?
Amaro C++, il gusto pieno dell'undefined behavior.
Sembrerebbe JavaOriginariamente inviato da MItaly
Linguaggio?![]()
Quindi sezione cannata![]()
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Così ad occhio direi anch'io, ma c'è sempre il dubbio C#.Originariamente inviato da Alex'87
Sembrerebbe Java![]()
Amaro C++, il gusto pieno dell'undefined behavior.
Java, scusate ho sbagliato sex.
Ora vi posto le classi, qualcosa non funziona. Che ne pensate?
class contieneth {
private int a;
private int b;
private ogg rif;
private Runnable r;
contieneth(ogg o){
rif = o;
r = new th();
}
public int getA(){
return a;
}
public int getB(){
return b;
}
public void setA(int a){
this.a = a;
}
public void setB(int b){
this.b = b;
}
public ogg getRif(){
return rif;
}
public void esegui(){
//Thread t = new Thread(r);
//t.start();
}
}
class th extends contieneth implements Runnable{
public void run(){
try{
System.out.println("passo da qui ciao");
super.setA(getRif().metodo1());
Thread.sleep(5000);
super.setB(getRif().metodo2());
System.out.println(super.getA() + super.getB());
}
catch (InterruptedException e){
System.out.println("Thread interrotto");
}
}
}
class ogg{
public int metodo1(){
System.out.println("metodo1");
return 5;
}
public int metodo2(){
System.out.println("metodo2");
return 2;
}
public void metodo3(){
System.out.println("metodo3");
}
}
class mainth{
public static void main(String args[]){
ogg o = new ogg();
contieneth ogg2 = new contieneth(o);
// ogg2.esegui();
}
}
il mio obiettivo è di riuscire a cambiare il valore delle variabili a cui ha accesso un thread.lo dico, perchè se no mi sa che non si capisce. Nel costruttore del thread potrei farlo la prima volta...ma poi?!
![]()
ho fatto passi avanti...ma non riesco a capire come fare a cambiare il valore di A.
Se voglio impostare a = 1000 e poi farlo elaborare dal thread, e cosi via....
ad esempio poi metto a = 2000 e il thread deve leggere quel valore, cosa devo fare?
class th implements Runnable{
private ogg rif;
th(ogg o){
rif=o;
}
public void run(){
try{
System.out.println("passo da qui ciao");
rif.setA(rif.metodo1());
Thread.sleep(5000);
rif.setB(rif.metodo2());
System.out.println(rif.getA() + rif.getB());
}
catch (InterruptedException e){
System.out.println("Thread interrotto");
}
}
}
class ogg{
private int a;
private int b;
public int metodo1(){
System.out.println("metodo1");
return 5;
}
public int metodo2(){
System.out.println("metodo2");
return 2;
}
public void metodo3(){
System.out.println("metodo3");
}
public int getA(){
return a;
}
public int getB(){
return b;
}
public void setA(int a){
this.a = a;
}
public void setB(int b){
this.b = b;
}
}
class mainth{
public static void main(String args[]){
ogg o = new ogg();
Runnable r = new th(o);
Thread t = new Thread(r);
t.start();
o.setA(1000);
}
}
per caso, non è possibile cambiare i valori a cui ha accesso un thread, perchè non si può fermare?![]()