Sincronização de Thread

Olá Pessoal, acho pouco provavel que alguém apareça aqui para responder isso o carnaval, mas mesmo assim vamos lá! =D

tenho o seguinte código:

[code]public void catchToken(String username, String password) {

	final HttpClient client = new DefaultHttpClient();
	final HttpPost post = new HttpPost(URLAUTHENTICATION);
	
	post.addHeader("Content-type", "application/x-www-form-urlencoded");
	post.addHeader("Accept", "*/*");

	final List<NameValuePair> values = new ArrayList<NameValuePair>();
	values.add(new BasicNameValuePair("account[username]", username));
	values.add(new BasicNameValuePair("account[password]", password));
	
	new Thread(new Runnable() {
		
		public synchronized void run() {
			try {
				post.setEntity(new UrlEncodedFormEntity(values));
				HttpResponse response = client.execute(post);
				
				if (response.getStatusLine().getStatusCode() != 401) {
					InputStream stream = response.getEntity().getContent();
					token = new Scanner(stream).useDelimiter("\\A").next();		
				}
				else{
					token = "";	
				}
			} catch (ClientProtocolException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}).start();
}[/code]

O metodo acima deve pegar um token meu servidor online passando parametros de autenticação depois vou retorná-lo com um simples metodo get, porem estou com um problema de sincronização, o get está sendo executado antes do meu metodo pegar o token no servidor, retornando assim um valor nulo.

Queria saber como devo fazer a thread que vai pegar o token obrigatóriamente antes do get que retorna-rá o valor!

Brigadão pessoal!

Primeiramente qual o motivo para usar uma Thread? Assim ja não satisfaz?

public void catchToken(String username, String password) {  
          
        final HttpClient client = new DefaultHttpClient();  
        final HttpPost post = new HttpPost(URLAUTHENTICATION);  
          
        post.addHeader("Content-type", "application/x-www-form-urlencoded");  
        post.addHeader("Accept", "*/*");  
  
        final List<NameValuePair> values = new ArrayList<NameValuePair>();  
        values.add(new BasicNameValuePair("account[username]", username));  
        values.add(new BasicNameValuePair("account[password]", password));  
       
              
            synchronized(this) {  
                try {  
                    post.setEntity(new UrlEncodedFormEntity(values));  
                    HttpResponse response = client.execute(post);  
                      
                    if (response.getStatusLine().getStatusCode() != 401) {  
                        InputStream stream = response.getEntity().getContent();  
                        token = new Scanner(stream).useDelimiter("\\A").next();       
                    } else{  
                        token = "";   
                    }  
                } catch (ClientProtocolException e) {  
                    e.printStackTrace();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }   
}  

É só não fazer o http request numa thread separada!! kkkk
pq vc fez?

Isto é porque outra thread tem que ficar mostrando uma barra de progresso para a interface android!

Muito bem… isso definitivamente não é Java Básico.

guisantosgui, leia a lista dos fóruns e me diga: para onde devo mover esse tópico?
http://www.guj.com.br/forums/list.java

Seria para o fórum de Android?
Da próxima vez, procure postar no fórum certo, para evitar que o pessoal responda pensando que sua aplicação é web, desktop…

Bom acho que o de Android então, afinal o Java deve trabalhar de forma diferente na plataforma.