Olá sei que o assunto é batido aqui na lista e também sei que existem vários artigos na internet sobre a utilização do synchronized entre metodos de thread. Tenho as seguintes classes como exemplo:
package testeJavaThread;
public class TNomes extends Thread{
private String nome;
public void run() {
while (true) {
.....
}
}
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return this.nome;
}
}
package testeJavaThread;
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
public class T1 extends Thread {
private BlockingDeque<String> nomesList;
private TNomes tnomes;
private String nome;
public T1 (TNomes tnomes) {
this.tnomes = tnomes;
this.nomesList = new LinkedBlockingDeque<String>();
}
public void run() {
while (true) {
try {
this.nome = this.nomesList.take();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.tnomes.setNome(this.processaNome(this.nome));
}
}
public String processaNome(String nome){
.....
return nome;
}
public void addList(String nome) {
try {
this.nomesList.put(nome);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package testeJavaThread;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TNomes tnomes = new TNomes();
tnomes.start();
T1 t1 = new T1(tnomes);
t1.start();
t1.addList("NOMEALUNO");
}
}
Ambas as threads T1 e TNomes trabalham com os métodos setNome e getNome da classe TNomes, sendo assim, eu somente gostaria de saber se ambos os métodos devem utiliza o synchronized.
POR FAVOR alguem poderia me auxiliar nesta dúvida? Se devo ou não utilziar o synchronized em ambos os metodos.
OBRIGADO.