본문 바로가기

Language/java55

[Java] synchronized 동기화 정리 synchronized method 인스턴스 단위로 lock이 걸린다. 메서드가 시작될 때부터 종료될 때까지 동기화가 발생한다. 동일 인스턴스내에서 synchronized키워드가 적용된 곳에서는 lock을 공유한다. synchronized block 인스턴스 단위로 lock이 걸린다. block내부에서 동기화가 발생한다. lock 객체를 지정하여 특정 대상에만 lock을 걸 수 있다. lock을 객체로 설정하면 해당 인스턴스만 lock이 걸리고 .class형식으로 설정하면 클래스 단위로 lock을 건다. static synchronized method 클래스 단위로 lock이 걸린다. 메서드가 시작될 때부터 종료될 때까지 동기화가 발생한다. static synchronized와 synchronized가 .. 2023. 3. 12.
[Java] 쓰레드_start()와 run() run()을 호출 : 클래스에 선언된 메서드를 호출하는 것 start()을 호출 : 새로운 쓰레드가 작업을 실행하는데 필요한 호출스택을 생성한 다음에 run()을 호출해서, 생성된 호출스택 에 run()이 첫번째로 올라가게 한다. 스케줄러 : 실행대기중인 쓰레드들의 우선순위를 고려하여 실행순서와 실행시간을 결정하고, 각 쓰레드들은 작성된 스케줄에 따라 자신의 순서가 되면 지정된 시간동안 작업을 수행. - 작업을 마친 쓰레드, 즉 run()의 수행이 종료된 쓰레드는 호출스택이 모두 비워지면서 이 쓰레드가 사용하던 호출스택이 사라짐. main쓰레드 - main메서드의 작업을 수행하는 것도 쓰레드이며, 이를 main쓰레드라고 한다. 실행 중인 사용자 쓰레드가 하나도 없을 때 프로그램은 종료된다. 2022. 8. 2.
[Java] 쓰레드_쓰레드의 구현과 실행 1. Thread클래스를 상속 class MYThread extends Thread { public void run() { /* 작업 내용 */ } // Thread클래스의 run()을 오버라이딩 } 2. Runnable인터페이스를 구현 (객체지향적인 방법) class MyThread implements Runnable { public void run() { /* 작업내용 */ } // Runnable인터페이스의 run()을 구현 } Runnable인터페이스는 오로지 run()만 정의되어 있는 간단한 인터페이스이다. Runnable인터페이스 구현하기 위해서 할 일은 추상메서드인 run()의 몸통{}을 만들어 주는 것 뿐. public interface Runnable { public abstract vo.. 2022. 8. 2.
[Java] 쓰레드_프로세스와 쓰레드 프로세스 : '실행 중인 프로그램' 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있음 쓰레드 : 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것 멀티쓰레드 프로세스 : 둘 이상의 쓰레드를 가진 프로세스 멀티태스킹과 멀티쓰레딩 멀티쓰레딩 : 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것 CPU의 코어가 한 번에 단 하나의 작업만 수행할 수 있으므로, 실제로 동시에 처리되는 작업의 개수는 코어의 개수와 일치 멀티쓰레딩의 장단점 멀티 쓰레딩의 장점 - CPU의 사용률을 향상시킨다. - 자원을 보다 효율적으로 사용할 수 있다. - 사용자에 대한 응답성이 향상된다. - 작업이 분리되어 코드가 간결해진다. 메신저로 채팅하면서 파일을 다운로드 받.. 2022. 8. 2.