Como encerrar uma Thread com método "blocante"

133 views
Skip to first unread message

turim_...@hotmail.com

unread,
Nov 13, 2012, 12:14:26 PM11/13/12
to redfo...@googlegroups.com
Pessoal,

Tenho um pedaço de código assim, dentro de uma Thread:

while(ativo){
    String mensagem = reader.readLine();
}

public void parar(){
ativo = false;
}

Como faço para finalizar essa Thread ? O método readLine é blocante, e se chamar reader.close, trava a aplicação.

Obrigado

Edson Yanaga

unread,
Nov 13, 2012, 1:22:39 PM11/13/12
to redfo...@googlegroups.com
Salve Thiago,

Que tal tentar explicar melhor o que a sua Thread faz? Suponho que o seu reader seja um BufferedReader, estou certo?

A princípio você poderia utilizar uma estrutura de wait()/notify(), mas é mais fácil decidir se você explicar o que você pretende fazer.

Grande abraço.

-------------------------------------------------------------
MSc. Edson Yanaga
Desenvolvedor de Software/Consultor
-------------------------------------------------------------
http://www.yanaga.com.br
http://about.me/edsonyanaga
@edsonyanaga
-------------------------------------------------------------
Artesão de Software: evoluindo de Aprendiz a Mestre
-------------------------------------------------------------
Oracle Certified Professional, Java Platform, Enterprise Edition 6
Enterprise JavaBeans Developer
Certified ScrumMaster
Sun Certified Enterprise Architect for the Java Platform,
Enterprise Edition 5 (i)
Sun Certified Developer for Java Web Services 5
Sun Certified Specialist for NetBeans IDE
Sun Certified Web Component Developer for J2EE 1.4
Sun Certified Programmer for Java 2 Platform 1.4
-------------------------------------------------------------
Sent with Sparrow (http://www.sparrowmailapp.com/?sig)
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> Para ver esta discussão na web, acesse https://groups.google.com/d/msg/redfoot-jug/-/oWzPtv2TG60J.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>



Thiago Turim

unread,
Nov 13, 2012, 1:31:27 PM11/13/12
to redfo...@googlegroups.com
Ok,


É um BufferedReader de um cliente que "lê" os dados de um Serlvet.

response.getWriter().println("mensagem);
reponse.getWiter().flush();

Cliente
while(ativo){
 reader.readline();
}

Só que eu quero finalizar a Thread, antes dos dados chegarem.

> Date: Tue, 13 Nov 2012 16:22:39 -0200
> From: ed...@yanaga.com.br
> To: redfo...@googlegroups.com
> Subject: Re: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
> Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com.
> Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com.

Gabriel Such

unread,
Nov 13, 2012, 1:56:21 PM11/13/12
to redfo...@googlegroups.com
Já tentou interromper a Thread?
while(!Thread.currentThread().isInterrupted()) {
   reader.readLine();
}

Thiago Turim

unread,
Nov 13, 2012, 2:05:08 PM11/13/12
to redfo...@googlegroups.com
Não testei, mas o problema é que qdo entra no readline, ele "para" e não testa a condição do while, até que o método realine libere o processamento.


Date: Tue, 13 Nov 2012 16:56:21 -0200

Subject: Re: [Redfoot JUG] Como encerrar uma Thread com método "blocante"

Gabriel Such

unread,
Nov 13, 2012, 2:11:43 PM11/13/12
to redfo...@googlegroups.com
Certo, mais um motivo para utilizar o interrupt. Ele lança uma InterruptException e finaliza a atividade atual, mesmo sendo um método blocante.

Thiago Turim

unread,
Nov 13, 2012, 2:45:58 PM11/13/12
to redfo...@googlegroups.com
Fiz o teste, quando chamo o método thread.interrupt(), thread.isInterrupted() passa a ser true, mas m bloco de código não teste o while novamente.


System.out.println("Iniciando");
while (!Thread.currentThread().isInterrupted()) {
System.out.println("Aguardando mensagem");
String message = reader.readLine();
System.out.println("Recebeu mensagem = " + json);
}

public void parar() {
ative = false;
thread.interrupt();
System.out.println(thread.isInterrupted());
}

Date: Tue, 13 Nov 2012 17:11:43 -0200

Thiago Turim

unread,
Nov 13, 2012, 2:46:41 PM11/13/12
to redfo...@googlegroups.com
a a Thread contibua ativa.


From: turim_...@hotmail.com
To: redfo...@googlegroups.com
Subject: RE: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
Date: Tue, 13 Nov 2012 19:45:58 +0000

Edson Yanaga

unread,
Nov 13, 2012, 3:05:58 PM11/13/12
to redfo...@googlegroups.com
Salve Thiago,

Não pensei muito, mas fiz uma classe abaixo e gostaria que testasse:

public class Teste implements Runnable {

private final InputStream in;

private boolean ativo = true;

public Teste(InputStream in) {
this.in = in;
}

@Override
public void run() {
try (Scanner scanner = new Scanner(in)) {
while (ativo) {
if (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
else {
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
}
}
}
}
}

public void finalizar() {
this.ativo = false;
}

}

Se você invocar o interrupt() nesta Thread, será capturado na InterruptedException. Usei um Scanner ao invés de um BufferedReader e a sintaxe do try-with-resources do Java 7.

Grande abraço.

-------------------------------------------------------------
MSc. Edson Yanaga
Desenvolvedor de Software/Consultor
-------------------------------------------------------------
http://www.yanaga.com.br
http://about.me/edsonyanaga
@edsonyanaga
-------------------------------------------------------------
Artesão de Software: evoluindo de Aprendiz a Mestre
-------------------------------------------------------------
Oracle Certified Professional, Java Platform, Enterprise Edition 6
Enterprise JavaBeans Developer
Certified ScrumMaster
Sun Certified Enterprise Architect for the Java Platform,
Enterprise Edition 5 (i)
Sun Certified Developer for Java Web Services 5
Sun Certified Specialist for NetBeans IDE
Sun Certified Web Component Developer for J2EE 1.4
Sun Certified Programmer for Java 2 Platform 1.4
-------------------------------------------------------------
Sent with Sparrow (http://www.sparrowmailapp.com/?sig)


On Tuesday, November 13, 2012 at 5:46 PM, Thiago Turim wrote:

> a a Thread contibua ativa.
>
> From: turim_...@hotmail.com (mailto:turim_...@hotmail.com)
> To: redfo...@googlegroups.com (mailto:redfo...@googlegroups.com)
> Subject: RE: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
> Date: Tue, 13 Nov 2012 19:45:58 +0000
>
> Fiz o teste, quando chamo o método thread.interrupt(), thread.isInterrupted() passa a ser true, mas m bloco de código não teste o while novamente.
>
>
> System.out.println("Iniciando");
> while (!Thread.currentThread().isInterrupted()) {
> System.out.println("Aguardando mensagem");
> String message = reader.readLine();
> System.out.println("Recebeu mensagem = " + json);
> }
>
> public void parar() {
> ative = false;
> thread.interrupt();
> System.out.println(thread.isInterrupted());
> }
>
> Date: Tue, 13 Nov 2012 17:11:43 -0200
> Subject: Re: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
> From: gabri...@gmail.com (mailto:gabri...@gmail.com)
> To: redfo...@googlegroups.com (mailto:redfo...@googlegroups.com)
>
> Certo, mais um motivo para utilizar o interrupt. Ele lança uma InterruptException e finaliza a atividade atual, mesmo sendo um método blocante.
>
>
> Em 13 de novembro de 2012 17:05, Thiago Turim <turim_...@hotmail.com (mailto:turim_...@hotmail.com)> escreveu:
> > Não testei, mas o problema é que qdo entra no readline, ele "para" e não testa a condição do while, até que o método realine libere o processamento.
> >
> > Date: Tue, 13 Nov 2012 16:56:21 -0200
> >
> > Subject: Re: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
> > From: gabri...@gmail.com (mailto:gabri...@gmail.com)
> > To: redfo...@googlegroups.com (mailto:redfo...@googlegroups.com)
> >
> >
> > Já tentou interromper a Thread?
> > http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html
> >
> > while(!Thread.currentThread().isInterrupted()) {
> > reader.readLine();
> > }
> >
> >
> > Em 13 de novembro de 2012 16:31, Thiago Turim <turim_...@hotmail.com (mailto:turim_...@hotmail.com)> escreveu:
> > > Ok,
> > >
> > >
> > > É um BufferedReader de um cliente que "lê" os dados de um Serlvet.
> > >
> > > response.getWriter().println("mensagem);
> > > reponse.getWiter().flush();
> > >
> > > Cliente
> > > while(ativo){
> > > reader.readline();
> > > }
> > >
> > > Só que eu quero finalizar a Thread, antes dos dados chegarem.
> > >
> > > > Date: Tue, 13 Nov 2012 16:22:39 -0200
> > > > From: ed...@yanaga.com.br (mailto:ed...@yanaga.com.br)
> > > > To: redfo...@googlegroups.com (mailto:redfo...@googlegroups.com)
> > > > > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com) (mailto:redfo...@googlegroups.com).
> > > > > Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug%2Bunsu...@googlegroups.com) (mailto:redfoot-jug...@googlegroups.com (mailto:redfoot-jug%2Bunsu...@googlegroups.com)).
> > > > > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > > > > Para ver esta discussão na web, acesse https://groups.google.com/d/msg/redfoot-jug/-/oWzPtv2TG60J.
> > > > > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.
> > > > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> > > > Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug%2Bunsu...@googlegroups.com).
> > > > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > > > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> > >
> > >
> > > --
> > > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.
> > > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> > > Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug%2Bunsu...@googlegroups.com).
> > > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> > >
> > >
> >
> >
> >
> > --
> > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> > Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug%2Bunsu...@googlegroups.com).
> > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> >
> >
> >
> > --
> > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> > Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug%2Bunsu...@googlegroups.com).
> > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> >
> >
>
>
>
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>
>
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.

Fernando Panont

unread,
Nov 13, 2012, 3:20:07 PM11/13/12
to redfo...@googlegroups.com
Thiago,


Fiz uma rápida busca por temporizadores para readLine() de sockets e
encontrei isso

http://stackoverflow.com/questions/7937668/setting-a-time-out-limit-to-readline

Imaginei que de alguma forma vc teria que setar um tempo limite para o
seu readline ficar parado esperando por mensagens.


Espero ter ajudado.



Abs


---

Fernando Sales Panont


Em 13 de novembro de 2012 17:46, Thiago Turim
<turim_...@hotmail.com> escreveu:

Thiago Turim

unread,
Nov 13, 2012, 3:22:56 PM11/13/12
to redfo...@googlegroups.com

é que eu não estou usando Sockets.
Daí não tem time-out

Thiago Turim

unread,
Nov 13, 2012, 3:24:28 PM11/13/12
to redfo...@googlegroups.com

Não testei o código do Yanaga, mas já tentei dessa forma.

Quando chega no readline() ele para, não sai... e a execção não acontece.


olha só o código do readline


 String readLine(boolean ignoreLF) throws IOException {
        StringBuffer s = null;
        int startChar;

        synchronized (lock) {
            ensureOpen();
            boolean omitLF = ignoreLF || skipLF;

        bufferLoop:
            for (;;) {

                if (nextChar >= nChars)
                    fill();
                if (nextChar >= nChars) { /* EOF */
                    if (s != null && s.length() > 0)
                        return s.toString();
                    else
                        return null;
                }
                boolean eol = false;
                char c = 0;
                int i;

                /* Skip a leftover '\n', if necessary */
                if (omitLF && (cb[nextChar] == '\n'))
                    nextChar++;
                skipLF = false;
                omitLF = false;

            charLoop:
                for (i = nextChar; i < nChars; i++) {
                    c = cb[i];
                    if ((c == '\n') || (c == '\r')) {
                        eol = true;
                        break charLoop;
                    }
                }

                startChar = nextChar;
                nextChar = i;

                if (eol) {
                    String str;
                    if (s == null) {
                        str = new String(cb, startChar, i - startChar);
                    } else {
                        s.append(cb, startChar, i - startChar);
                        str = s.toString();
                    }
                    nextChar++;
                    if (c == '\r') {
                        skipLF = true;
                    }
                    return str;
                }

                if (s == null)
                    s = new StringBuffer(defaultExpectedLineLength);
                s.append(cb, startChar, i - startChar);
            }
        }
    }


From: turim_...@hotmail.com
To: redfo...@googlegroups.com
Subject: RE: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
Date: Tue, 13 Nov 2012 20:22:56 +0000

Bruno P Melo

unread,
Nov 13, 2012, 3:32:39 PM11/13/12
to redfo...@googlegroups.com
sete a vari�vel ative para false e chame o interrupt na STREAM, no seu
reader().
adicione um try/catch tratando essa interrup��o e deve funcionar na sua
l�gica.

PS : esse modelo de program�tico que tu est� usando n�o parece correto,
as threads n�o devem ser canceladas, o custo para cri�-las e inici�-las
� muito alto, deve-se utilizar as fun��es wait() e notify() para PARAR e
INICIAR as threads.

On 11/13/2012 05:45 PM, Thiago Turim wrote:
> Fiz o teste, quando chamo o m�todo
> thread.interrupt(), thread.isInterrupted() passa a ser true, mas m bloco
> de c�digo n�o teste o while novamente.
>
>
> System.out.println("Iniciando");
> while (!Thread.currentThread().isInterrupted()) {
> System.out.println("Aguardando mensagem");
> String message = reader.readLine();
> System.out.println("Recebeu mensagem = " + json);
> }
>
> public void parar() {
> ative = false;
> thread.interrupt();
> System.out.println(thread.isInterrupted());
> }
> ------------------------------------------------------------------------
> Date: Tue, 13 Nov 2012 17:11:43 -0200
> Subject: Re: [Redfoot JUG] Como encerrar uma Thread com m�todo "blocante"
> From: gabri...@gmail.com
> To: redfo...@googlegroups.com
>
> Certo, mais um motivo para utilizar o interrupt. Ele lan�a uma
> InterruptException e finaliza a atividade atual, mesmo sendo um m�todo
> blocante.
>
>
> Em 13 de novembro de 2012 17:05, Thiago Turim <turim_...@hotmail.com
> <mailto:turim_...@hotmail.com>> escreveu:
>
> N�o testei, mas o problema � que qdo entra no readline, ele "para" e
> n�o testa a condi��o do while, at� que o m�todo realine libere o
> processamento.
>
> ------------------------------------------------------------------------
> Date: Tue, 13 Nov 2012 16:56:21 -0200
>
> Subject: Re: [Redfoot JUG] Como encerrar uma Thread com m�todo
> "blocante"
> From: gabri...@gmail.com <mailto:gabri...@gmail.com>
> To: redfo...@googlegroups.com <mailto:redfo...@googlegroups.com>
>
>
> J� tentou interromper a Thread?
> http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html
>
> while(!Thread.currentThread().isInterrupted()) {
> reader.readLine();
> }
>
>
> Em 13 de novembro de 2012 16:31, Thiago Turim
> <turim_...@hotmail.com <mailto:turim_...@hotmail.com>> escreveu:
>
> Ok,
>
>
> � um BufferedReader de um cliente que "l�" os dados de um Serlvet.
>
> response.getWriter().println("mensagem);
> reponse.getWiter().flush();
>
> Cliente
> while(ativo){
> reader.readline();
> }
>
> S� que eu quero finalizar a Thread, antes dos dados chegarem.
>
> > Date: Tue, 13 Nov 2012 16:22:39 -0200
> > From: ed...@yanaga.com.br <mailto:ed...@yanaga.com.br>
> > To: redfo...@googlegroups.com
> <mailto:redfo...@googlegroups.com>
> > Subject: Re: [Redfoot JUG] Como encerrar uma Thread com
> m�todo "blocante"
>
> >
> > Salve Thiago,
> >
> > Que tal tentar explicar melhor o que a sua Thread faz?
> Suponho que o seu reader seja um BufferedReader, estou certo?
> >
> > A princ�pio voc� poderia utilizar uma estrutura de
> wait()/notify(), mas � mais f�cil decidir se voc� explicar o que
> voc� pretende fazer.
> >
> > Grande abra�o.
> >
> > -------------------------------------------------------------
> > MSc. Edson Yanaga
> > Desenvolvedor de Software/Consultor
> > -------------------------------------------------------------
> > http://www.yanaga.com.br
> > http://about.me/edsonyanaga
> > @edsonyanaga
> > -------------------------------------------------------------
> > Artes�o de Software: evoluindo de Aprendiz a Mestre
> > -------------------------------------------------------------
> > Oracle Certified Professional, Java Platform, Enterprise
> Edition 6
> > Enterprise JavaBeans Developer
> > Certified ScrumMaster
> > Sun Certified Enterprise Architect for the Java Platform,
> > Enterprise Edition 5 (i)
> > Sun Certified Developer for Java Web Services 5
> > Sun Certified Specialist for NetBeans IDE
> > Sun Certified Web Component Developer for J2EE 1.4
> > Sun Certified Programmer for Java 2 Platform 1.4
> > -------------------------------------------------------------
> > Sent with Sparrow (http://www.sparrowmailapp.com/?sig)
> >
> >
> > On Tuesday, November 13, 2012 at 3:14 PM,
> turim_...@hotmail.com <mailto:turim_...@hotmail.com> wrote:
> >
> > > Pessoal,
> > >
> > > Tenho um peda�o de c�digo assim, dentro de uma Thread:
> > >
> > > while(ativo){
> > > String mensagem = reader.readLine();
> > > }
> > >
> > > public void parar(){
> > > ativo = false;
> > > }
> > >
> > > Como fa�o para finalizar essa Thread ? O m�todo readLine �
> blocante, e se chamar reader.close, trava a aplica��o.
> > >
> > > Obrigado
> > >
> > > --
> > > Voc� est� recebendo esta mensagem porque se inscreveu no
> grupo "Redfoot JUG" dos Grupos do Google.
> > > Para postar neste grupo, envie um e-mail para
> redfo...@googlegroups.com
> <mailto:redfo...@googlegroups.com>
> (mailto:redfo...@googlegroups.com
> <mailto:redfo...@googlegroups.com>).
> > > Para cancelar a inscri��o nesse grupo, envie um e-mail para
> redfoot-jug...@googlegroups.com
> <mailto:redfoot-jug%2Bunsu...@googlegroups.com>
> (mailto:redfoot-jug...@googlegroups.com
> <mailto:redfoot-jug%2Bunsu...@googlegroups.com>).
> > > Para ver esta discuss�o na web, acesse
> https://groups.google.com/d/msg/redfoot-jug/-/oWzPtv2TG60J.
> > > Para obter mais op��es, acesse
> https://groups.google.com/groups/opt_out.
> > >
> > >
> >
> >
> >
> > --
> > Voc� est� recebendo esta mensagem porque se inscreveu no
> grupo "Redfoot JUG" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para
> redfo...@googlegroups.com <mailto:redfo...@googlegroups.com>.
> > Para cancelar a inscri��o nesse grupo, envie um e-mail para
> redfoot-jug...@googlegroups.com
> <mailto:redfoot-jug%2Bunsu...@googlegroups.com>.
> > Para obter mais op��es, acesse
> https://groups.google.com/groups/opt_out.
> >
> >
>
> --
> Voc� est� recebendo esta mensagem porque se inscreveu no grupo
> "Redfoot JUG" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para
> redfo...@googlegroups.com <mailto:redfo...@googlegroups.com>.
> Para cancelar a inscri��o nesse grupo, envie um e-mail para
> redfoot-jug...@googlegroups.com
> <mailto:redfoot-jug%2Bunsu...@googlegroups.com>.
> Para obter mais op��es, acesse
> https://groups.google.com/groups/opt_out.
>
>
>
>
> --
> Voc� est� recebendo esta mensagem porque se inscreveu no grupo
> "Redfoot JUG" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para
> redfo...@googlegroups.com <mailto:redfo...@googlegroups.com>.
> Para cancelar a inscri��o nesse grupo, envie um e-mail para
> redfoot-jug...@googlegroups.com
> <mailto:redfoot-jug%2Bunsu...@googlegroups.com>.
> Para obter mais op��es, acesse https://groups.google.com/groups/opt_out.
>
>
>
> --
> Voc� est� recebendo esta mensagem porque se inscreveu no grupo
> "Redfoot JUG" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para
> redfo...@googlegroups.com <mailto:redfo...@googlegroups.com>.
> Para cancelar a inscri��o nesse grupo, envie um e-mail para
> redfoot-jug...@googlegroups.com
> <mailto:redfoot-jug%2Bunsu...@googlegroups.com>.
> Para obter mais op��es, acesse https://groups.google.com/groups/opt_out.
>
>
>
>
> --
> Voc� est� recebendo esta mensagem porque se inscreveu no grupo "Redfoot
> JUG" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com.
> Para cancelar a inscri��o nesse grupo, envie um e-mail para
> Para obter mais op��es, acesse https://groups.google.com/groups/opt_out.
>
>
> --
> Voc� est� recebendo esta mensagem porque se inscreveu no grupo "Redfoot
> JUG" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com.
> Para cancelar a inscri��o nesse grupo, envie um e-mail para
> Para obter mais op��es, acesse https://groups.google.com/groups/opt_out.
>
>

--
Bruno P M�lo
IT Specialist - IBM J2EE Developer
Sun Certified Java Programmer (SCJP) 5 Certified
@bpmelo
------------------------
R$xU$:2,0692 IBOV:+0.74%
running for:2d 1:56h with 74% free disk space
now is 13/11/2012 18:20:41
Ubuntu 12.04 LTS [precise] Mga(PR)+30�C

Lucas Goraieb

unread,
Nov 13, 2012, 4:15:13 PM11/13/12
to redfo...@googlegroups.com
Não testei aqui, mas pelo q eu entendi pode resolver

while(ativo){
 if (reader.ready()) {
   reader.readline();
 }
}

Ref:

Eduardo Rebola

unread,
Nov 13, 2012, 8:15:13 PM11/13/12
to redfo...@googlegroups.com, redfo...@googlegroups.com
Que tal mudar a abordagem, deixar um agente externo responsável por iniciar e cancelar o processo de captura? Por exemplo, deixe o bloco da captura dentro de um TimerTask e controle nele o timeout.

Abraço,

Eduardo Rebola.
--
Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.

Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Edson Yanaga

unread,
Nov 13, 2012, 8:40:14 PM11/13/12
to redfo...@googlegroups.com
Salve Thiago,

Note que em toda iteração eu checo com scanner.hasNextLine(), para que ele não fique bloqueado no scanner.nextLine(). É um busy loop, mas acho que é o mais parecido com o que você pediu.

Lembrando que é mais adequado você implementar um Runnable como fiz e mandá-lo para execução através de um ExecutorService. Qualquer coisa dê uma olhada em java.util.concurrent.Executors

Grande abraço.

-------------------------------------------------------------
MSc. Edson Yanaga
Desenvolvedor de Software/Consultor
-------------------------------------------------------------
http://www.yanaga.com.br
http://about.me/edsonyanaga
@edsonyanaga
-------------------------------------------------------------
Artesão de Software: evoluindo de Aprendiz a Mestre
-------------------------------------------------------------
Oracle Certified Professional, Java Platform, Enterprise Edition 6
Enterprise JavaBeans Developer
Certified ScrumMaster
Sun Certified Enterprise Architect for the Java Platform,
Enterprise Edition 5 (i)
Sun Certified Developer for Java Web Services 5
Sun Certified Specialist for NetBeans IDE
Sun Certified Web Component Developer for J2EE 1.4
Sun Certified Programmer for Java 2 Platform 1.4
-------------------------------------------------------------
Sent with Sparrow (http://www.sparrowmailapp.com/?sig)


> Subject: RE: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
> Date: Tue, 13 Nov 2012 20:22:56 +0000
>
>
> é que eu não estou usando Sockets.
> Daí não tem time-out
>
> > From: fspa...@gmail.com (mailto:fspa...@gmail.com)
> > Date: Tue, 13 Nov 2012 18:20:07 -0200
> > Subject: Re: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
> > To: redfo...@googlegroups.com (mailto:redfo...@googlegroups.com)
> >
> > Thiago,
> >
> >
> > Fiz uma rápida busca por temporizadores para readLine() de sockets e
> > encontrei isso
> >
> > http://stackoverflow.com/questions/7937668/setting-a-time-out-limit-to-readline
> >
> > Imaginei que de alguma forma vc teria que setar um tempo limite para o
> > seu readline ficar parado esperando por mensagens.
> >
> >
> > Espero ter ajudado.
> >
> >
> >
> > Abs
> >
> >
> > ---
> >
> > Fernando Sales Panont
> >
> >
> > Em 13 de novembro de 2012 17:46, Thiago Turim
> > <turim_...@hotmail.com (mailto:turim_...@hotmail.com)> escreveu:
> > > a a Thread contibua ativa.
> > >
> > > ________________________________
> > > Subject: RE: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
> > > Date: Tue, 13 Nov 2012 19:45:58 +0000
> > >
> > >
> > > Fiz o teste, quando chamo o método thread.interrupt(),
> > > thread.isInterrupted() passa a ser true, mas m bloco de código não teste o
> > > while novamente.
> > >
> > >
> > > System.out.println("Iniciando");
> > > while (!Thread.currentThread().isInterrupted()) {
> > > System.out.println("Aguardando mensagem");
> > > String message = reader.readLine();
> > > System.out.println("Recebeu mensagem = " + json);
> > > }
> > >
> > > public void parar() {
> > > ative = false;
> > > thread.interrupt();
> > > System.out.println(thread.isInterrupted());
> > > }
> > > ________________________________
> > > Date: Tue, 13 Nov 2012 17:11:43 -0200
> > > Subject: Re: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
> > > Certo, mais um motivo para utilizar o interrupt. Ele lança uma
> > > InterruptException e finaliza a atividade atual, mesmo sendo um método
> > > blocante.
> > >
> > >
> > > Em 13 de novembro de 2012 17:05, Thiago Turim <turim_...@hotmail.com (mailto:turim_...@hotmail.com)>
> > > escreveu:
> > >
> > > Não testei, mas o problema é que qdo entra no readline, ele "para" e não
> > > testa a condição do while, até que o método realine libere o processamento.
> > >
> > > ________________________________
> > > Date: Tue, 13 Nov 2012 16:56:21 -0200
> > >
> > > Subject: Re: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
> > > Já tentou interromper a Thread?
> > > http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html
> > >
> > > while(!Thread.currentThread().isInterrupted()) {
> > > reader.readLine();
> > > }
> > >
> > >
> > > Em 13 de novembro de 2012 16:31, Thiago Turim <turim_...@hotmail.com (mailto:turim_...@hotmail.com)>
> > > escreveu:
> > >
> > > Ok,
> > >
> > >
> > > É um BufferedReader de um cliente que "lê" os dados de um Serlvet.
> > >
> > > response.getWriter().println("mensagem);
> > > reponse.getWiter().flush();
> > >
> > > Cliente
> > > while(ativo){
> > > reader.readline();
> > > }
> > >
> > > Só que eu quero finalizar a Thread, antes dos dados chegarem.
> > >
> > > > Date: Tue, 13 Nov 2012 16:22:39 -0200
> > > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> > > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > > redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> > > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> > >
> > >
> > >
> > >
> > >
> > > --
> > > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG"
> > > dos Grupos do Google.
> > > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> > > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > > redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> > > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> > >
> > >
> > >
> > > --
> > > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG"
> > > dos Grupos do Google.
> > > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> > > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > > redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> > > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> > >
> > >
> > >
> > >
> > >
> > > --
> > > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG"
> > > dos Grupos do Google.
> > > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> > > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > > redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> > > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> > >
> > >
> > >
> > > --
> > > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG"
> > > dos Grupos do Google.
> > > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> > > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > > redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> > > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> > >
> > >
> > >
> > > --
> > > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG"
> > > dos Grupos do Google.
> > > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> > > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > > redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> > > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> >
> >
> > --
> > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> > Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> > Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com (mailto:redfo...@googlegroups.com).
> Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com (mailto:redfoot-jug...@googlegroups.com).
> Visite este grupo em http://groups.google.com/group/redfoot-jug?hl=pt-BR.

Thiago Turim

unread,
Nov 14, 2012, 6:02:47 AM11/14/12
to redfo...@googlegroups.com
Galera, só para compartilhar com você, resolvi o problema, não sei se é da forma correta.


Quando que parar de receber as mensagens, fecho a conexão com o servidor e seta a flag para false. Assim Quando o servidor detecta que a conexão com o cliente fachou, ele também fecha o fluxo, assim acontece uma Exception na Thread do cliente, 
continuando o while, com a flag False ele finaliza a Thread.

Dessa forma cheguei a meu objetivo.

while (ativo) {
 try{
    String msg= reader.readLine();
}catch(Exception e){
    if(ativo){
    //notifica listener que ocorreu uma exeção
    }
}
}

public void finaliza(){
connection.close(); //Fecha conexão
ativo = false;//altera flag
}

Obrigado pelas dicas.

[]s


> Date: Tue, 13 Nov 2012 18:32:39 -0200
> From: bruno...@gmail.com
> To: redfo...@googlegroups.com
> Subject: Re: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
>
> sete a variável ative para false e chame o interrupt na STREAM, no seu
> reader().
> adicione um try/catch tratando essa interrupção e deve funcionar na sua
> lógica.
>
> PS : esse modelo de programático que tu está usando não parece correto,
> as threads não devem ser canceladas, o custo para criá-las e iniciá-las
> é muito alto, deve-se utilizar as funções wait() e notify() para PARAR e
> INICIAR as threads.
>
> On 11/13/2012 05:45 PM, Thiago Turim wrote:
> > Fiz o teste, quando chamo o método

> > thread.interrupt(), thread.isInterrupted() passa a ser true, mas m bloco
> > de código não teste o while novamente.

> >
> >
> > System.out.println("Iniciando");
> > while (!Thread.currentThread().isInterrupted()) {
> > System.out.println("Aguardando mensagem");
> > String message = reader.readLine();
> > System.out.println("Recebeu mensagem = " + json);
> > }
> >
> > public void parar() {
> > ative = false;
> > thread.interrupt();
> > System.out.println(thread.isInterrupted());
> > }
> > ------------------------------------------------------------------------
> > Date: Tue, 13 Nov 2012 17:11:43 -0200
> > Subject: Re: [Redfoot JUG] Como encerrar uma Thread com método "blocante"
> > From: gabri...@gmail.com
> > To: redfo...@googlegroups.com
> >
> > Certo, mais um motivo para utilizar o interrupt. Ele lança uma
> > InterruptException e finaliza a atividade atual, mesmo sendo um método

> > blocante.
> >
> >
> > Em 13 de novembro de 2012 17:05, Thiago Turim <turim_...@hotmail.com
> > <mailto:turim_...@hotmail.com>> escreveu:
> >
> > Não testei, mas o problema é que qdo entra no readline, ele "para" e
> > não testa a condição do while, até que o método realine libere o

> > processamento.
> >
> > ------------------------------------------------------------------------
> > Date: Tue, 13 Nov 2012 16:56:21 -0200
> >
> > Subject: Re: [Redfoot JUG] Como encerrar uma Thread com método

> > "blocante"
> > From: gabri...@gmail.com <mailto:gabri...@gmail.com>
> > To: redfo...@googlegroups.com <mailto:redfo...@googlegroups.com>
> >
> >
> > Já tentou interromper a Thread?

> > http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html
> >
> > while(!Thread.currentThread().isInterrupted()) {
> > reader.readLine();
> > }
> >
> >
> > Em 13 de novembro de 2012 16:31, Thiago Turim
> > <turim_...@hotmail.com <mailto:turim_...@hotmail.com>> escreveu:
> >
> > Ok,
> >
> >
> > É um BufferedReader de um cliente que "lê" os dados de um Serlvet.

> >
> > response.getWriter().println("mensagem);
> > reponse.getWiter().flush();
> >
> > Cliente
> > while(ativo){
> > reader.readline();
> > }
> >
> > Só que eu quero finalizar a Thread, antes dos dados chegarem.

> >
> > > Date: Tue, 13 Nov 2012 16:22:39 -0200
> > > From: ed...@yanaga.com.br <mailto:ed...@yanaga.com.br>
> > > To: redfo...@googlegroups.com
> > <mailto:redfo...@googlegroups.com>
> > > Subject: Re: [Redfoot JUG] Como encerrar uma Thread com
> > método "blocante"

> >
> > >
> > > Salve Thiago,
> > >
> > > Que tal tentar explicar melhor o que a sua Thread faz?
> > Suponho que o seu reader seja um BufferedReader, estou certo?
> > >
> > > A princípio você poderia utilizar uma estrutura de

> > wait()/notify(), mas é mais fácil decidir se você explicar o que
> > você pretende fazer.
> > >
> > > Grande abraço.
> > >
> > > -------------------------------------------------------------
> > > MSc. Edson Yanaga
> > > Desenvolvedor de Software/Consultor
> > > -------------------------------------------------------------
> > > http://www.yanaga.com.br
> > > http://about.me/edsonyanaga
> > > @edsonyanaga
> > > -------------------------------------------------------------
> > > Artesão de Software: evoluindo de Aprendiz a Mestre

> > > -------------------------------------------------------------
> > > Oracle Certified Professional, Java Platform, Enterprise
> > Edition 6
> > > Enterprise JavaBeans Developer
> > > Certified ScrumMaster
> > > Sun Certified Enterprise Architect for the Java Platform,
> > > Enterprise Edition 5 (i)
> > > Sun Certified Developer for Java Web Services 5
> > > Sun Certified Specialist for NetBeans IDE
> > > Sun Certified Web Component Developer for J2EE 1.4
> > > Sun Certified Programmer for Java 2 Platform 1.4
> > > -------------------------------------------------------------
> > > Sent with Sparrow (http://www.sparrowmailapp.com/?sig)
> > >
> > >
> > > On Tuesday, November 13, 2012 at 3:14 PM,
> > turim_...@hotmail.com <mailto:turim_...@hotmail.com> wrote:
> > >
> > > > Pessoal,
> > > >
> > > > Tenho um pedaço de código assim, dentro de uma Thread:

> > > >
> > > > while(ativo){
> > > > String mensagem = reader.readLine();
> > > > }
> > > >
> > > > public void parar(){
> > > > ativo = false;
> > > > }
> > > >
> > > > Como faço para finalizar essa Thread ? O método readLine é

> > blocante, e se chamar reader.close, trava a aplicação.
> > > >
> > > > Obrigado
> > > >
> > > > --
> > > > Você está recebendo esta mensagem porque se inscreveu no

> > grupo "Redfoot JUG" dos Grupos do Google.
> > > > Para postar neste grupo, envie um e-mail para
> > redfo...@googlegroups.com
> > <mailto:redfo...@googlegroups.com>
> > (mailto:redfo...@googlegroups.com
> > <mailto:redfo...@googlegroups.com>).
> > > > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > > > Para ver esta discussão na web, acesse
> > https://groups.google.com/d/msg/redfoot-jug/-/oWzPtv2TG60J.

> > > > Para obter mais opções, acesse
> > https://groups.google.com/groups/opt_out.
> > > >
> > > >
> > >
> > >
> > >
> > > --
> > > Você está recebendo esta mensagem porque se inscreveu no

> > grupo "Redfoot JUG" dos Grupos do Google.
> > > Para postar neste grupo, envie um e-mail para
> > redfo...@googlegroups.com <mailto:redfo...@googlegroups.com>.
> > > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > > Para obter mais opções, acesse
> > https://groups.google.com/groups/opt_out.
> > >
> > >
> >
> > --
> > Você está recebendo esta mensagem porque se inscreveu no grupo

> > "Redfoot JUG" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para
> > redfo...@googlegroups.com <mailto:redfo...@googlegroups.com>.
> > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > Para obter mais opções, acesse
> > https://groups.google.com/groups/opt_out.
> >
> >
> >
> >
> > --
> > Você está recebendo esta mensagem porque se inscreveu no grupo

> > "Redfoot JUG" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para
> > redfo...@googlegroups.com <mailto:redfo...@googlegroups.com>.
> > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> >
> >
> >
> > --
> > Você está recebendo esta mensagem porque se inscreveu no grupo

> > "Redfoot JUG" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para
> > redfo...@googlegroups.com <mailto:redfo...@googlegroups.com>.
> > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> >
> >
> >
> >
> > --
> > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot

> > JUG" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com.
> > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> >
> >
> > --
> > Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot

> > JUG" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com.
> > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
> >
> >
>
> --
> Bruno P Mélo

> IT Specialist - IBM J2EE Developer
> Sun Certified Java Programmer (SCJP) 5 Certified
> @bpmelo
> ------------------------
> R$xU$:2,0692 IBOV:+0.74%
> running for:2d 1:56h with 74% free disk space
> now is 13/11/2012 18:20:41
> Ubuntu 12.04 LTS [precise] Mga(PR)+30°C
>
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Redfoot JUG" dos Grupos do Google.

> Para postar neste grupo, envie um e-mail para redfo...@googlegroups.com.
> Para cancelar a inscrição nesse grupo, envie um e-mail para redfoot-jug...@googlegroups.com.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>
Reply all
Reply to author
Forward
0 new messages