본문 바로가기

JAVA4

쓰레드의 동기화 멀티쓰레드 프로세스의 경우 여서 쓰레드가 같은 프로세스 내의 자원을 공유해서 작업하기 때문에 서로의 작업에 영향을 주게 된다. 만일 쓰레드1가 작업하던 중에 쓰레드2에게 제어권이 넘어갔을 때, 공유 데이터를 쓰레드2가 변경한다면, 쓰레드1이 다시 제어권을 받아서 나머지 작업을 마쳤을 때 의도한 것과는 다른 결과를 얻을 수 있다. 이를 대비해서 공유 데이터를 사용하는 코드 영역을 임계 영역으로 지정해놓고, 공유 데이터가 가지고 있는 lock을 획득한 단 하나의 쓰레드만 이 영역 내의 코드를 수행할 수 있게 한다. 그리고 해당 쓰레드가 임계 영역 내의 모든 코드를 수행하고 벗어나서 lock을 반납해야ㅁ만 다른 쓰레드가 반납된 lock을 획득해서 임계 영역의 코드를 수행할 수 있다. 이처럼 한 쓰레드가 진행 .. 2023. 8. 10.
String 클래스의 생성자와 메서드 1. String(char[ ] value) 주어진 문자열(value)을 갖는 String 인스턴스를 생성 char[ ] c = {'H', 'e', 'l', 'l', 'o}; String s = new String(c); → s = "Hello" 2. String(StringBuffer buf) StringBuffer 인스턴스가 갖고 있는 문자열과 같은 내용의 String 인스턴스를 생성 StringBuffer sb = new StringBuffer("Hello"); String s = new String(sb); → s = "Hello" 3. char charAt(int i) 지정된 위치(i)에 있는 문자를 알려준다.(i는 0부터) String s = "Hello"; char c = s.charAt(1.. 2023. 8. 5.
오버로딩과 오버라이딩 1. 오버로딩 메서드는 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 한다. 그러나 한 클래스 내에 이미 같은 이름을 가진 메서드가 있더라도 매개변수의 개수, 타입, 순서가 다르면 같은 이름을 사용해서 메서드를 정의할 수 있다. 이렇게 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 오버로딩이라고 한다. int add(int a, int b) {return a+b;} int add(int x, int y) {return x+y;}// 오류 int add(int a, int b) {return a+b;} long add(int x, int y) {return (long)(x+y);}// 오류 int add(int a, int b) {return a+b;} in.. 2023. 7. 27.
static 키워드 1. 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static 붙임 2. static 변수는 인스턴스 생성하지 않아도 사용 가능 ★3. static 메서드는 인스턴스 변수 사용 불가능 - 이유 : static 메서드가 호출될 때 인스턴스가 존재하지 않을 수 있다. 그래서 클래스 메서드에서 인스턴스변수 사용 금함. 1. 멤버변수 : 클래스 영역에 선언된 변수 1) 클래스변수 : static 붙음 2) 인스턴스변수 : static 안 붙음 2. 지역변수 : 클래스 영역 이외의 영역(메서드, 생성자, 초기화 블럭 내부) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Test{ public void iMethod(){} public static sMethod(.. 2023. 7. 24.