Synchronized로 검색한 결과 :: 시소커뮤니티[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

회원가입 I 비밀번호 찾기


SSISO Community검색
SSISO Community메뉴
[카페목록보기]
[블로그등록하기]  
[블로그리스트]  
SSISO Community카페
블로그 카테고리
정치 경제
문화 칼럼
비디오게임 스포츠
핫이슈 TV
포토 온라인게임
PC게임 에뮬게임
라이프 사람들
유머 만화애니
방송 1
1 1
1 1
1 1
1 1
1

Synchronized로 검색한 결과
등록일:2008-03-03 10:42:22
작성자:
제목: 자바에서 synchronized()가 의미하는것은 무엇입니까...???


  자바에서  Synchronized()가  의미하는것은  무엇입니까...???

소스코드가...

import  java.net.*;
import  java.io.*;
import  java.util.*;

public  class  ChatServer{
Vector  clientVector=new  Vector();
int  clientNum=0;

public  void  broadcast()  throws  IOException{
Synchronized(clientVector){
for(int  i=0;  i
ChatThread  client=(ChatThread)  clientVector.elementAt(i);

Synchronized(client){
client.sendMessage(msg);
};
};
};
};

.
.
.
};

인데요...여기서  'Synchronized(clientVector)'의  의미는  무엇입니까...???

답변  좀  부탁드립니다...



-------------------------------------------------------------------------------------------------

요새  통  프로그래밍을  손을  떼고  산지  오래되서..
코드를  보니  이해가  안가는  부분이  종종  있네요

책을  보고  쓴  코드이고,  오타가  없이  틀리지  않았다면
음...  제가  자바를  다시  공부해야  할듯  하네요...

우선  코드  내용중  부분적으로  이해하진  못했으나  님께서  궁금하신  부분은

Synchronized(clientVector)인데요
이건  이  작업  여기서  작업이란  clientVector가  사용중이면  접근  하지  못하게  기다리게  하는  걸로  기억하고  있습니다.

예를  들면  제  머리로는  코드가  좀  이상해서  이해할수가  없으나...
for(int  i=0;  i  ChatThread  client=(ChatThread)  clientVector.elementAt(i);
이  부분에서  clientVector가  사용중이잖아요.
clientVector.elementAt(i)  <--  이렇게

이렇게  사용중일  경우  잠시  기다리게  하는걸로  ....  기억합니다.

마지막으로  한번더  쉽게  설명하자면  코드를  보니  네트웍  접속  프로그램인데요
Client가  clientVector에  추가가  되고  있는  그  상황!

그  상황에  누군가가  동시에  접속할시  clientVector.elementAt(i)  <--  이  부분에서
잘못하면  동시에  진행해버린  나머지  i가  0인데  i++해주기  전에  둘이  동시에
어!  i가  0이네  그러면서  "그럼  난  clientVector.elementAt(0)을  해야지!"  하면서  둘이  동시에  clientVector.elementAt(0)을  해주는거죠

사용자는  둘인데  벡터는  0이  되는셈이죠.

아...뭐가  이상하나  했더니  저  for문이  좀  이상한거  같군요
i++이  부족해  보이고..  어쨋든

사용자가  동시에  접속하는  경우가  있을수  있으므로  이렇게  코드에  추가해주곤  합니다.  제가  요새  공부가  부족해서  설명이  매우  허접한거  같은데요  Synchronized를
책에서  좀더  읽어보시면  제  설명과  혼합해서  생각해보시면  이해가  가실듯  합니다.

제  허접한  설명이  이해가  안가셨을수도  있겠죠..  채택을  바라는건  아닙니다...
열씸히  공부하시기  바랍니다.^^

Ps.  제  설명에  문제  있는부분  있다면  -_-  의의제기  해주세요.
제가  요새  공부를  안해서  틀린  부분이  있을수도  있답니다...

출처  :  네이버  지식인