Spring

국비코딩 Mar14 | JAVA NIO, Thread, Multi Thread, 익명객체

onnnzeoz 2023. 3. 14. 17:45

코드리뷰할 땐 : 한 코드블럭마다 의도를 말해줘야함

uri 부분 : 필요한 요청 경로만 뽑아내기 위해서

 

JAVA NIO

비동기방식 : 

Stream대신 Channel(큰 빨대 하나로 in과 out모두 다룸)

Buffer도 지원

 

buffer 사용해서 빠르게 했지만 더 빠르게 할 수 있는 방법

옮길 데이터 만큼의 배열을 만들고 거기에 데이터를 다 담고 그걸 통째로 옮겨버리는 방법

but 이렇게 하면 파일이 깨질 수도 있고, 배열의 크기를 엄청 크게 할 수도 없음

 

IO에서는 File 하나로 경로, 파일 정보, 파일 다루기를 모두 했지만

NIO에서는 경로는 Path, 파일 정보는 FileSystem, 파일 다루기는 Files로 나뉨

 

nio를 통해서도 파일 업로드가 가능한데 얘는 통신이 불가능하기 때문에 내 컴퓨터에만 업로드될 수 있음;; 

 

Thread

프로그램을 실행하게 해주는 원동력

main method는 thread를 동작하게 하는 메서드

이게없으면 돌지않아.

워드나 메모장같은 process는 1개 이상의 thread로 구성되며 규모나 복잡성에 따라 thread가 여러 개 들어갈 수가 있다

process간엔 메모리 쉐어 불가능, but thread에서는 메모리 쉐어 가능

 

 

tmi 쿼드코어 = thread 4개 쓸 수 있는 

 

스레드의 특징

뒤죽박죽 -> 비동기성-> 제어가 힘들다, 순서가 맞지를 않

 

Multi Thread

메인메서드는 메인스레드를 생성한다

이 메인스레드에서 자신을 위해 일할 work Thread를 생성할 수 있다(복사본이라고도 할 수 있음)

이게 바로 multi thread

 

work thread 생성하는 방법

Runnable interface 구현하는 방법과

스레드 클래스를 상속받는 방법 2가지가 있다

 

익명객체로 스레드 생성할 때 특징

생성한 스레드를 거기서만 사용하겠다는 특징

 

thread이름

setName 메서드를 통해 이름을 지정해줄 수도 있음

이름을 지정하지 않으면 Thread-n형태의 이름이 자동 지정됨

thread.setName(“스레드 이름”); // 스레드 이름 지정
thread.getName(); // 스레드 이름 가져오기