본문 바로가기
public void static main()/Etc

[WEB] 동기 & 비동기

by 햄리뮤 2022. 10. 14.
반응형

좋아 오랜만에 블로그 정리! 직렬성 & 동시성은 다음에 알아보자! ㅎㅎ

동기 (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

 

아~ 오랜만에 블로그했는데 다시 살펴봐야겠다 꼼꼼히 잘적었나... 수고했어 내자신!

 

 

 

https://fftl.tistory.com/22

 

[Java] java에서 동기, 비동기란 무엇인가?

요즘 자료구조를 공부하는데 계속해서 나타나는 단어가 있습니다. 그게 바로 동기화 라는 단어인데 굉장히 유사한 기능을 가진 두 가지의 자료구조간의 차이점이 무엇인가 라고 찾아보았을 때

fftl.tistory.com

https://goodenoughyoungyeom.netlify.app/Web%20Development/[Web%20Development]%EB%8F%99%EA%B8%B0%EC%99%80%EB%B9%84%EB%8F%99%EA%B8%B0%EC%B2%98%EB%A6%AC/ 

 

[Web Development] 동기(Synchronous),비동기(Asynchronous) 처리

동기(Synchronous) 하나의 연산이 끝나야(요청을 보낸 후 응답을 받아야) 그다음 코드가 실행되는 방식이다. 모든 작업이 순차적으로 진행되며 어떤 작업이 실행중이라면 다음 작업은 대기하게 된

goodenoughyoungyeom.netlify.app

https://webheck.tistory.com/entry/Java%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B0%A9%EC%8B%9DAsynchronous-processing-model

 

[Java]동기와 비동기 방식(Asynchronous processing model)

출처 - https://poiemaweb.com/js-async 취업을 준비하던 중 서버 비동기 연동 경험 이란 문구를 보게 되었다. 맨날 동기 비동기 연동이라는 단어를 많이 들어 봤으나 막상 개념을 머릿속에서 꺼내 보자니

webheck.tistory.com

 

** 그냥 하루하루 개인 공부한 것을 끄적 거리는 공간입니다.

이곳 저곳에서 구글링한 것과 강의 들은

내용이 정리가 되었습니다.

그림들은 그림밑에 출처표시를 해놓았습니다.

문제가 될시 말씀해주시면 해당 부분은 삭제 하도록하겠습니다. **

반응형

'public void static main() > Etc' 카테고리의 다른 글

[RAID] 레이드란 무엇인가!  (0) 2022.12.19
[OS] 프로그램과 프로세스  (0) 2022.02.21
[OS] 멀티 프로그램, 프로세싱  (0) 2022.02.01
[OS] 메모리 영역  (0) 2022.02.01
[Swagger] 스웩! 췤!  (0) 2022.01.29

댓글