JAVA thread, network, protocol, TCP, UDP (230706)

이원건·2023년 7월 6일
0

JAVA

목록 보기
33/33
post-thumbnail

1.아래의 소스코드에서 음수 값이 나오는 이유를 설명하시오.

  • 문제
class Account2{
	int balance = 1000;
	
	public synchronized void withdraw(int money) {
		
		if(balance >= money) {
			try {
				Thread.sleep(1000);
			} catch (Exception e) {
				
				e.printStackTrace();
			}
			balance = balance - money;
		}
	}
	
}

class RunnableAccount implements Runnable{

	Account2 acc = new Account2();
	
	@Override
	public void run() {
		//1000 700 400 100
		while(acc.balance > 0) {
			 // 100, 200, 300중의 한 값을 임으로 선택해서 출금(withdraw)
			int money = (int) (Math.random() * 3 + 1) * 100;
			acc.withdraw(money);
			System.out.println("::balance:" + acc.balance);
		}
		
	}
	
}


class ThreadEx6 {
	public static void main(String[] args) throws Exception
	{
		Runnable r = new RunnableAccount();
		
		Thread t1 = new Thread(r,"첫번째");
		Thread t2 = new Thread(r,"두번째");
		
		t1.start();
		t2.start();

Thread는 동시에 돌기 때문에 예를 들어 balance가 300일 때 money가 둘다 200이라고 치면 두개가 동시에 들어가서 t1이 처리를 하기 전에 1초 묶이고 t2가 들어가서 1초 묶일 때 t1이 200을 빼고 나면 100이 되는데 그 이후 t2가 200을 빼면 -100이 나오는 결과를 초래하게 된다. 동시성 때문에 발생하는 일이다.


2. 자바에서 쓰레드 동기화에 대하여 설명하시오.

  • 자바에서는 위 1번 문제와 같이, 동시에 값을 참조해 오류가 발생하는 것을 방지하기 위해 쓰레드를 동기화 해 동기화 대상에 한해 동시에 처리를 할 수 없도록 만든다. method 선언 시 method의 return type 앞에 synchronized 키워드를 붙여주므로써 동기화를 적용할 수 있다.

3. 네트워킹 이란?

  • 컴퓨터 네트워크를 통해 서로 통신하는 기능을 구현하는 것을 의미. 네트워킹은 클라이언트와 서버 간의 데이터 교환, 원격 제어, 파일 공유 등 다양한 기능을 수행할 수 있게 함

4. 아래의 객체를 설명하시오.

  • URLConnetion

URL을 통해 웹 리소스에 접근하고 데이터를 읽고 쓸 수 있는 클래스입니다. URLConnection을 사용하여 HTTP를 포함한 다양한 프로토콜을 처리할 수 있습니다.

  • InetAddress

IP 주소를 표현하고 조작하기 위한 클래스입니다. DNS(Domain Name System) 조회를 통해 호스트 이름을 IP 주소로 변환하거나, IP 주소의 정보를 가져오는 등의 작업을 수행할 수 있습니다.

  • ServerSocket

클라이언트와 서버 간의 연결을 위한 기본 클래스입니다. 서버용 소켓. ServerSocket을 사용하여 클라이언트의 연결 요청 수락하는 용도

  • Socket

클라이언트와 서버 간의 연결을 위한 기본 클래스입니다. 클라이언트용 소켓. 서버에 연결하기 위해 사용


5. 프로토콜이란?

통신 규약으로, 네트워크를 통해 통신하도록 규칙을 정해 놓은 것. 네트워킹에서 자주 사용되는 프로토콜로는 TCP/IP, HTTP, FTP, SMTP, POP3 등이 있음


6. TCP, UDP 에 대하여 설명하시오.

  • TCP, transmission control protocol
  • 상호 연결이 되어야 동작함.
  • 신뢰성이 높음(확인 응답, 재전송, 순서 보장 등의 기능을 제공)
  • 흐름 제어, 혼잡 제어를 위해 데이터 전송 속도를 조절하고 네트워크 혼잡을 방지
  • 웹 브라우저, 이메일, 파일 전송 등 신뢰성이 중요한 애플리케이션에서 사용
  • 연결 시에는 3-way handshake, 연결 종료 시에는 4-way handshake를 한다.
  • 상대적으로 느림(그래도 빠름)
  • UDP, user datagram protocol
  • 연결없어도 동작함
  • 신뢰성이 낮음(응답, 재전송, 순서 보장 등의 기능이 없음)
  • 연결이 없어도 동작하기 때문에 상대적으로 빠름
  • 데이터 송신시 손실이 발생해도 괜찮은 스트리밍, 실시간 멀티미디어, DNS 등에서 사용
  • 상대적으로 지연이 없음

  • TCP handshake
  • 3way handshake, 4way handshake

0개의 댓글