Calendar cal = Calendar.getInstance();

cal.setTimeInMillis(file.lastModified());

System.out.println(String.format("%1$tF %1$tT", cal));


밀리세컨드 현재시간으로 반환


---------------


텍스트 파일를 읽을때는 BufferdReader 를 생각하자

디코딩을알아서 해오고 라인별로 읽어온다.



텍스트 파일을 쓸때는 printWirter를 생각하자.

쉽고 유연해서 강력하다.



---------


자바로 메모장 만들기 연습


StringBuffer - 동기화처리

StringBuilder - 비동기화

DAO - 데이터 엑세스 오브젝트


각 객체가 가지고있는 역할에만 충실할 수 있도록 만들어보자

출력이면 출력, 데이터 처리면 데이터 처리


메서드에서 trhows로 처리해줄경우

안에서 예외처리를 해야될경우 try ~ finaly 구문을 쓸수 있다.


단축키 설정

setAcll~~ 찾아보기



'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

8월 2주차 2일 (6주)  (0) 2015.08.11
8월 2주차 1일 (6주)  (0) 2015.08.10
8월 1주차 4일 (5주)  (0) 2015.08.06
8월 1주차 3일 (5주)  (0) 2015.08.05
8월 1주차 2일 (5주)  (0) 2015.08.04
Posted by moyaiori
,

- 스레드 동기화 예제 2

Account 예제 : ATM을 통해 동기화 알아보기


동기화의 이유 : 공유된 객체를 다른 스레드로 접근할시 공유도니 데이터처리가 섞일경우 데이터의 무결성을 유지할수 없기때문에 동기화가 필요하다


동기화 처리는 호출하는쪽이나 호출당하는쪽 어느쪽에 해줘도 상관없지만 보통 호출당하는쪽에서 해주는곳 즉 처리메서드가 돌아가는곳에서 해주느것이 좋다.


스레드는 CPU를 추상화하여 만든 객체이다.


wait는 동기화처리가 되어있는곳에서만 사용한다. 다른곳에서 사용하면 예외처리가 발생한다.


wait가 정확히는 스레드함수가 아니고 Object의 메서드 이다.


wait를 받은 스레드는 notify로 큐로 가서 대기할수 있다.


- 파일 입출력

Stream API 소개

시냇물(Stream) 개념을 추상화환 Stream APIs를 제공한다.

키보드로부터 받는 입력(표준입력)

모니터로 보여주는 출력(표준출력)


- Stream API의 특징

입출력 대상에 상관없이 일관된 방법으로 데이터를 읽고, 쓸 수 있다.

스트림은 단방향이다.

스트림은 FiFO(Fist In First Out) 구조이다.

" 스트림은 연속적인 일련의 데이터(바이트) 흐름이다."


바이트스트림은 인코딩 & 디코딩이 없다

인코딩 & 디코딩이 첨부되어있는게 문자 스트림이다.

문자 스트림은 1바이트씩 읽으면안된다. 한글은 2바이트


- 입출력 방향에 따른 분류

입력(insputStream, FileinputStream등)

출력(outputStream, fileOutputStream등)


- 데이터종류에 대한 분류

바이트, 객체, 문자<-- 3가지가 있다.스트림의 종류


- 입출력 스트림의 용도에 따른 분류

노드(Node)스트림 : 단순히 입출력만 담당

필터(Filter)스트림 : 스트림의 데이터를 조작



available() 은 read 하기전에 찍으면 파일크기이지만 read가 끝난후에 찎으면 0이 된다.


read는 반드시 예외처리시에 finally에서 close를 해줘야한다.


FileInputStream, FileoutputStream 은 노드스트림


버퍼 스트림의 목적 : 임의접근


BufferedInputStream은 생성자 메게변수로 input 스트림을 따로 받아야 한다.



system.in 의 in의 속성은 BufferedInputStream이다.

표준입력은 이미 만들어져있다.


out 은 PrintStream이다.

도스콘솔에 출력하기위해 미리 만들어져(static)있다.

system,out.println은 printStream객체를 말하는거다.


- File 클래스

파일이나 디렉토리에 대한 기본정보 크기를 제공하거나 관리할 수 있다.



file.exists 실제 물리적인 경로에 대한것이다.











'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

8월 2주차 1일 (6주)  (0) 2015.08.10
8월 1주차 5일 (5주)  (0) 2015.08.07
8월 1주차 3일 (5주)  (0) 2015.08.05
8월 1주차 2일 (5주)  (0) 2015.08.04
8월 1주차 1일 (5주)  (0) 2015.08.03
Posted by moyaiori
,

IMS 마무리 및 제출


- 멀티 스레드(Multi-Thread) 프로그래밍

스레드란? - 실행중인 하나의 프로그램(프로세스) 내에서 독립적으로 실행되는 연속적인 작업 흐름(일련의 수행코드)을 의미한다.


JVM에 의해서 하나의 스레드가 만들어진다. 메인스레드라고한다. 단일 스레드방식(현재까지) 단일 스레드를 메인스레드라고한다. 메인스레드에 의해 main()(메인메서드)이 호출된다.


운영체제는 멀티 태스킹을 자바에서는 멀티 스레드를 가능하도록한다.

멀티태스킹 - 독립된 메모리에 존재하여 OS가 프로그램을 제어한다.

멀티스레드 - 메모리 공유자원을 절약, 여러개의 코드가 실행될수있다. 자원절약과 효율적인 병행 프로그래밍 가능하다.

논리적으로는 병행되지만 물리적으로 한주기에는 하나의 동작만 수행된다. 매우 짧은 순간 마다 하나의 실행이 수행된다.


JVM 자체도 멀티스레드로 동작한다.

사용자 정의 스레드의 엔트리포인트는 run이고 꼭 필요하다.


스레드 시작시 바로 그시점에서 시작되지않는다. 시작되는대까지 시간이 약간있다.


그냥 this는 현재 클래스에 대한정보를 가져오지만

클래스명.this 하면 대상 클래스의 래퍼런스를 가져온다.


이름없는 지역 내부 클래스로 구현가능하다.


- 스래드의 생명주기(life cycle)

생성(new) -> 실행대기(Runnable) -> 실행(Running) -> 종료(Dead)

            start() : 실행가능상태

        스캐줄러 관리


생명주기를 배우는 가장큰의미는 다음과같다

블락상태 : 대기, 수면, 유보, 봉쇄의 4가지상태를 알아야한다.


stop() 도 Deprecated되었다.

유보 : suspend(), resume()은 Deprecated되엇다.


yield()를 호출하면 바로 실행대기상태로 간다.


Dead된 스레드는 다시시작할 수 없다.


스레드로 디지털시계 만들기

while문안에서 repaint를 호출, paint안에서 캘린더를 새로그릴때마다 받아와서 넣어준다.


- 스레드 동기화

공유된 객체를 접근할때 작업을 마무리할수있도록 자물쇠를 잠그는것


synchronized 키워드를 클래스명 앞에 붙여주면 클래스 자체가 동기화된다.











'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

8월 1주차 5일 (5주)  (0) 2015.08.07
8월 1주차 4일 (5주)  (0) 2015.08.06
8월 1주차 2일 (5주)  (0) 2015.08.04
8월 1주차 1일 (5주)  (0) 2015.08.03
7월 4주차 5일 (4주)  (0) 2015.07.31
Posted by moyaiori
,