국비코딩 Mar14 | JAVA NIO, Thread, Multi Thread, 익명객체
코드리뷰할 땐 : 한 코드블럭마다 의도를 말해줘야함
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(); // 스레드 이름 가져오기