1
그래서 난 내 질문은 다음이다,왜 Threads의 ArrayList를 동기화해야합니까?</p> <p>메신저 만에이를 호출하는 경우
는 내가 동기화 된 키워드를 사용해야 할 것으로 보인다Java - Filling an ArrayList of Threads with loop
에 따라 스레드의 ArrayList를을 작성해야하지만, main thread 왜 synchronized 키워드를 사용해야합니까? 잠재적으로 동일한 권한을 수행 할 수있는 다른 스레드는 없습니다.
ArrayList<Thread> t = new ArrayList<Thread>();
for(int i=0;i<love.size();i++){
BTConnection cbtc = love.get(i).btc;
if(cbtc!=null){
Communicate temp = new Communicate(cbtc);
Thread ttemp = new Thread(temp);
ttemp.start();
t.add(ttemp);
}
}
내가 사용하는 코드 아래의 권리 또한 경우 :
for(int i=0;i<t.size();i++){
t.get(i).join();
}
합니까 루프 정지에 대한 다음 i 번째 스레드 리턴하여 i 번째 + 1을 기다려야 진행까지?
귀하의 질문은 형식이 잘 지정되어 있습니다. 저것을위한 명성은 당신의 첫번째 질문입니다. 언어 태그가 아마도 가장 중요한 언어 태그 일 수 있으므로 자신이 능숙한 언어 태그를 따르는 사용자는 자신의 질문을 강조 할 수 있습니다. – bolov
두 개 이상의 스레드가 동일한 개체를 동시에 액세스하고 수정할 수 있으면 일종의 동기화가 필요합니다. 당신의 경우, 메인 쓰레드 만이't'에 대해 알고 있고, 생성 된'Communicate' 객체들 중 어느 것으로도 보이지 않습니다. * BTConnection은 주 스레드와 생성 된 스레드 모두에서 액세스 할 수 있기 때문에 동기화가 필요할 수도 있지만 정말 이상한 일을해야합니다. (왜 여러 스레드에서 하나의 연결을 사용해야합니까? ?) 실제로 문제가 될 수 있습니다. –
@MattiasBuelens 글쎄, 루프의 각 반복마다 연결이 계속 변경되어야합니다 ... 내가 잘못 했습니까? – user217354