좋아 오랜만에 블로그 정리! 직렬성 & 동시성은 다음에 알아보자! ㅎㅎ
동기 (Synchronous) 가 뭐야? 동기 사랑 나라 사랑?
- 하나의 연산이 끝나야 그 다음 코드가 실행되는 방식! 실행중인 태스크가 끝나야 다음 태스크로 진행!
- 웹 브라우저에서 서버에 요청을 보내고 응답을 받는다.
public class Synchronous {
public static void main(String[] args) {
// 순차적으로 실행!
task1();
task2();
task3();
}
public static void task1() {
System.out.println("task1");
}
public static void task2() {
System.out.println("task2");
}
public static void task3() {
System.out.println("task3");
}
}
위의 결과는
task1();
task2();
task3();
순서대로 나온다!
[동기 장점]
- 작업을 설계 하거나 작업의 흐름에 대해 파악하기 쉽다.
- 다른 스레드에서 접근할 수 없기 때문에 안정적인 작업이 가능. (Thread Safe)
[동기 단점]
- 하나의 작업이 끝날때 까지 다른 작업을 처리할 수 없다.
[동기에는 뭐가있을까]
- synchronized 키워드
- List 와 Vector
- StringBuffer
- StringBuilder
- HashMap
- HashTable
비동기(Asynchronous) 는 그럼!!?
- 병렬적으로 태스크를 수행함! 실행중인 태스크가 끝나던 말던 대기하지 않고 다음 태스크를 실행!
- 이미 갖고있는 데이터를 이용하여 사용자에게 전달해준다 DB 까지 갈 필요가 없음!
자바에서는 멀티 스레트 동작이 비동기식으로 작동한다!
public class Asynchronous {
public static void main(String[] args) {
Thread task1 = new Thread(()->{
task1();
});
Thread task2 = new Thread(()->{
task2();
});
Thread task3 = new Thread(()->{
task3();
});
// 결과를 알 수 없다!
task1.start();
task2.start();
task3.start();
}
public static void task1() {
System.out.println("task1");
}
public static void task2() {
System.out.println("task2");
}
public static void task3() {
System.out.println("task3");
}
}
결과를 예측하기 힘듬!
[비동기 장점]
- 요청에 따른 결과가 반환되는 시간동안 다른 작업을 수행할 수 있다.
[비동기 단점]
- 동기식보다 설계가 복잡하다!
비동기를 사용하는 것들은 어떤게 있을까?
- 멀티 스레트
- Ajax
아~ 오랜만에 블로그했는데 다시 살펴봐야겠다 꼼꼼히 잘적었나... 수고했어 내자신!
** 그냥 하루하루 개인 공부한 것을 끄적 거리는 공간입니다.
이곳 저곳에서 구글링한 것과 강의 들은
내용이 정리가 되었습니다.
그림들은 그림밑에 출처표시를 해놓았습니다.
문제가 될시 말씀해주시면 해당 부분은 삭제 하도록하겠습니다. **
'public void static main > Etc' 카테고리의 다른 글
[HTTP] Stateless/Stateful 뭘 사용해야 할까? (0) | 2025.01.07 |
---|---|
[RAID] 레이드란 무엇인가! (0) | 2022.12.19 |
[OS] 프로그램과 프로세스 (0) | 2022.02.21 |
[Design Pattern] Strategy Pattern (0) | 2022.02.05 |
[OS] 멀티 프로그램, 프로세싱 (0) | 2022.02.01 |
댓글