본문 바로가기

thread4

자바 synchronized 이해 synchronized 메소드 public class Test { public synchronized void foo(){ for(int i=0;i{ test.voo(); }).start(); } } 위처럼 실행하면 첫번째 쓰레드가 작업(foo 메소드 실행)을 모두 마칠때까지 두번째 쓰레드는 voo를 호출하지 못한다. static synchronized 메소드 그럼 여기서 한가지 생각이 든다 static 메소드는 어떻게 될까? static 메소드는 heap영역에 할당되지 않고 static영역에 들어간다. 그러므로 static synchronized 메소드는 인스턴스의 lock이 아닌 클래스의 lock을 가지게 된다.. public class Test { public static void foo(){ sy.. 2021. 2. 24.
Thread-3 실행제어 동기화 이번글이 쓰레드의 마지막이면서 쓰레드의 가장 핵심적인 내용이다. 1. 실행제어 쓰레드는 실행시키고, 중단시키는일을 실행제어라고 한다. 쓰레드는 우리가 처리해야할 작업들을 병렬로 처리해야 할 때 사용하는데, 각 작업들의 실행을 중간에 중단시킨다던가, 아니면 중단 되었던 작업을 실행시키는것을 직접 제어해야 할 때가 있다. 이번에는 이렇게 직접 제어할 수 있는 쓰레드 메소드들을 알아보고 적당한 사용방법을 알아보겠다. 1-1 sleep 우선 쓰레드를 일시적으로 멈추는 sleep이 있다. public class Main { public static void main(String[] args) { Thread thread=new Thread(()->{ for(int i=0;i{ for(int i=0.. 2021. 2. 12.
Thread-2 우선순위 쓰레드 그룹 데몬 쓰레드 1. 우선순위 쓰레드에는 우선순위라는 개념이 있다. 우선순위는 쓰레드간의 중요도에 따라 지정할 수 있다. 예를들어 채팅과 파일전송을 하는 프로그램을 예로 들어보자. 채팅같은경우는 아주빠른 시간안에 응답을 해줘야하고, 파일전송은 채팅보다는 비교적 느려도 괜찮다. 그런데 만약 2가지의 작업의 우선순위가 같다면 채팅의 응답속도가 느려질 수 있다. 이럴때 채팅의 우선순위를 보다 빠르게 하면 우리가 채팅을하는데 큰 문제를 못느낄것이다. 그러면 자바 Thread에서 어떻게 우선순위를 지정하는지 보자. Thread thread=new Thread(()->{ // do something }); thread.setPriority(5); // 1~10 thread.start(); 자바 T.. 2021. 2. 11.
Thread-1 자바 쓰레드 사용방법 start, run 쓰레드의 효율성 1. 자바 쓰레드 사용방법 자바에서 쓰레드를 만들 수 있는 방법은 2가지가 있다. 1. Thread를 상속받아서 구현 2. Runnable 인터페이스이용하는 방법 우선 Thread를 상속받는 방법부터 보자. public class ThreadEx1 extends Thread{ //Thread의 run 메소드를 구현한다. @Override public void run(){ for(int i=0;i 2021. 2. 8.