[JAVA 23.07.06] Synchronized, Networking(Protocol)

홍선우·2023년 7월 6일
0

1.아래의 소스코드에서 음수 값이 나오는 이유를 설명하시오.
class Account2{
int balance = 1000;
public 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() {
while(acc.balance > 0) {
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();

답변: 여러 스레드에서 동시에 withdraw() 메서드를 호출하는 경우, 잔액 확인(if(balance >= money))과 잔액에서 출금(balance = balance - money) 사이에 다른 스레드에 의한 출금이 발생할 수 있다. 이로 인해 잔액이 음수가 될 수 있다.


  1. 자바에서 쓰레드 동기화에 대하여 설명하시오.
  • synchronized는 메서드 또는 블록에 사용하여 해당 부분을 동기화한다. 한 번에 하나의 스레드만 사용할 수 있다.

  1. 네트워킹 이란?
  • 컴퓨터나 다른 장치들이 서로 통신하고 데이터를 교환하는 과정

  1. 아래의 객체를 설명하시오.
  • URLConnetion: URL을 통해 원격 서버와의 통신을 할 수 있도록 지원합니다. 이를 통해 HTTP, HTTPS, FTP 등의 프로토콜을 사용하여 데이터를 읽고 쓸 수 있다.
  • InetAddress: 네트워크 통신에서 IP 주소와 호스트 이름 간의 변환, 호스트 이름의 IP 주소 확인, IP 주소의 호스트 이름 확인 등을 수행할 수 있다.
  • ServerSocket: 서버 측에서 클라이언트의 연결을 수락하고 네트워크 통신을 처리하는 데 사용되는 클래스다. ServerSocket은 특정 포트에서 수신 대기하며, 클라이언트의 연결 요청이 들어오면 해당 연결을 수락하여 소켓을 생성한다.
  • Socket: 클라이언트와 서버 간의 네트워크 통신을 담당하는 클래스다. Socket은 클라이언트 측에서 서버에 연결을 요청하거나, 서버 측에서 클라이언트의 연결을 수락하는 데 사용된다.

  1. 프로토콜이란?
  • 컴퓨터 네트워크에서 데이터 통신을 위해 사용되는 규칙과 규약의 집합. 프로토콜은 데이터의 형식, 전송 방법, 오류 처리, 보안 등을 정의하여 통신하는 장치 간에 상호 작용을 가능하게 한다.

네트워크에서 데이터를 전송하기 위해서는 데이터를 일정한 형식으로 구성하고, 어떤 경로로 전송할지, 데이터의 정확성을 어떻게 보장할지, 데이터를 주고받을 때 어떤 규칙을 따를지 등을 결정해야 합니다. 이런 목적을 달성하기 위해 프로토콜이 사용된다.

프로토콜은 송신자와 수신자 간의 상호 작용을 정의하며, 데이터 전송의 다양한 측면을 다룬다.


  1. TCP, UDP 에 대하여 설명하시오.
  • TCP: 인터넷 프로토콜 스위트(IP Suite)의 핵심 프로토콜 중 하나로, 네트워크 상에서 데이터를 안정적으로 전송하기 위해 사용되는 연결 지향형 프로토콜이다.

  • UDP: 인터넷 프로토콜 스위트(IP Suite)의 하나로, 네트워크 상에서 데이터를 비신뢰적으로 전송하기 위해 사용되는 프로토콜이다. UDP는 TCP와 달리 연결 설정 과정이 없으며, 데이터 전송에 대한 확인이나 재전송을 보장하지 않는다. 이로 인해 TCP보다 더 낮은 오버헤드를 가지고 빠른 전송을 가능하게 한다.


0개의 댓글