olá galera, estou desenvolvendo um game com J2ME, tenho uma tela de loading game para mudar de cenario nela tem uma thread q dorme 3 segundos, eu queria q quando ela estivesse dormindo eu chama-se o metodo da outra classe para mudar o cenario do jeito q estou fazendo, chamando o metodo da outra classe depois q a thread da classe loading game dormiu nao adinta em nada pois ela dorme a toa, como faco para resolver isso ?
Gato.
Seria isso:
public void minhaThreadExec(){
statusThread = true;
new Thread(this).start();
while(statusThread){
try {
Thread.sleep(1000);
enquandoDormeExecuta();
} catch (Exception e) {
e.getMessage();
}
}
}
esse enquandoDormeExecuta(); … deveria ser outra thread … assim vc starta essa thread ANTES de chamar a Thread.sleep … assim enquando a enquanto a sua thread dorme … a outra executa
[quote=malves_info]Seria isso:
[code]
public void minhaThreadExec(){
statusThread = true;
new Thread(this).start();
while(statusThread){
try {
Thread.sleep(1000);
enquandoDormeExecuta();
} catch (Exception e) {
e.getMessage();
}
}
}
[/code][/quote]
estou fazendo isso q vc escreveu, entao a operacao nao esta sendo executado quando a thread dorme e sim depois ela dorme entendeu?
Será que assim não funciona?
public void minhaThreadExec(){
statusThread = true;
new Thread(this).start();
while(statusThread){
try {
new Thread(new Runnable() {
public void run() {
enquandoDormeExecuta();
}
}).start();
Thread.yeld();
Thread.sleep(1000);
} catch (Exception e) {
e.getMessage();
}
}
}
[quote=TangZero]Será que assim não funciona?
[code]
public void minhaThreadExec(){
statusThread = true;
new Thread(this).start();
while(statusThread){
try {
new Thread(new Runnable() {
public void run() {
enquandoDormeExecuta();
}
}).start();
Thread.yeld();
Thread.sleep(1000);
} catch (Exception e) {
e.getMessage();
}
}
}
[/code][/quote]
oq Thread.yeld(); faz? nunca vi esse comando t+
Desculpe, é yield().
Ele faz a Thread atual passar a vez para outra Thread processar alguma coisa.
[quote=TangZero]Desculpe, é yield().
Ele faz a Thread atual passar a vez para outra Thread processar alguma coisa.[/quote]
ok kara, vou testar, grato.
[quote=TangZero]Desculpe, é yield().
Ele faz a Thread atual passar a vez para outra Thread processar alguma coisa.[/quote]
Na verdade, esse comando só diz ao SO que é um bom momento de fazer a preempção (passar a vez para outra thread).
E ele não é necessário nessa situação, já que um sleep está sendo dado. O sleep vai colocar a thread em espera, e vai fazer com que o SO passe a vez para outra thread de um jeito ou de outro…
Um bom artigo sobre o assunto é esse aqui:
http://developers.sun.com/mobility/midp/articles/threading2/