Thread (쓰레드)
프로세스
실행된 프로그램
운영체제로부터 시스템 자원을 할당받는 작업의 단위
자바 프로그램은 운영체제 대신 JVM에 의해 자원을 할당 받는다
쓰레드
프로세스의 특정한 수행 경로
프로그램의 처리 경로
프로그램의 흐름
멀티 쓰레드
하나의 프로세스를 동시에 처리하는 것처럼 보이지만
사실은 매우 짧은 단위로 분할해서 차례대로 처리한다
여러개의 경로를 가질 수 있게 한다
한개의 처리경로를 여러개로 나누어 동시 작업이 가능하게 한다
웹페이지(JSP)가 대표적인 멀티 쓰레드 응용 프로그램이다
장점
효율성 증가
처리량 증가
처리비용 감소
단점
복잡하고 설계가 어려움
자원의 공유문제
교착상태(Deadlock)
교착상태
멀티 쓰레드 중 쓰레드 간의 대기 상태가 종료되지 않어서 무한정 대기만 하는 비정상적인 상태
해결방법 : 제어문을 통해 교착상태를 판단하고 다시 깨워준다
쓰레드 생성
1. Thread 클래스 상속
2. Runnable 인터페이스 지정 후 Thread 객체에 넘겨주기
동기화(synchronized)
하나의 쓰레드가 실행 중일 떄 다른 쓰레드가 동시에 같은 필드를 사용하지 못하도록 막는 것
synchronized(this){
//다른 쓰레드가 동시에 접근 불가
}
파일 입출력
Writer(입력)
FileWriter : 경로에 있는 파일을 가져오기(쓰기 위해)
- 파일이 없는 경우에는 그 이름대로 파일을 생성해준다
- 하지만 경로가 이상한 경우에는 (폴더가 잘못된 폴더인 경우)
폴더를 생성해 주지는 않고, 예외가 발생
new FileWriter("파일경로") : 덮어쓰기모드
new FIleWriter("파일경로", true) : 추가 모드
BufferedWriter : 버퍼를 이용해서 파일을 작성
bw.write("문자열") : 버퍼에 문자열 쓰기
bw.close() : 실제 파일에 적용
버퍼에 있는 데이터들을 파일에 써주면서 버퍼 닫기
Reader(출력)
FileReader > BufferedReader > 파일에서 출력
FileReader : 경로에 있는 파일 가져오기(읽기 위해)
- 파일이 없으면 예외 발생(FNFE)
BufferedReader : 버퍼를 이용해서 파일 읽기
MVC 모델
소프트웨어 설계시 사용되는 디자인 패턴
만드는 방법이 아닌 "잘" 만들기
M : Model -> 데이터와 대응
V : View -> 보여지는 화면
C : Controller -> 흐름, 처리 담당
MVC 1
View , Controller 함께 공존하는 형태
MVC 2
View, Controller 가 분리된 형태
DTO(Data Transfer Object) / VO(Value Object)
데이터 전송 객체
양쪽으로 전송되어 오고가는 데이터들을 담은 객체
여러 데이터들을 포장해서 만든 데이터 포장 객체
DAO(Data Access Object)
데이터 접근 객체
데이터들을 관리하는(추가, 수정, 삭제, 조회 CRUD)
여러 메소드들이 정의되어 있다
Create, Read, Update, Delete
'언어의 기초 > 자바(JAVA)' 카테고리의 다른 글
[JAVA]배열 (0) | 2022.01.11 |
---|---|
[JAVA] 간단한 DB 연결 / DBConnection(feat MySQL) (0) | 2021.12.22 |
[JAVA] Object클래스, Wrapper, Generic (0) | 2021.12.06 |
[coolsms] java로 문자 보내기 (0) | 2021.12.02 |
[JAVA] 익명 클래스 (0) | 2021.11.30 |