CheerUp_Cheers
JAVA - Thread | Generic | Lamda | Stream |XML 본문
1)런어블 인터페이스 상속.
결국은 start메소드를 호출.
스레드라는 클래스에 상속
-> start()
(2)스레드클래스를 직접사용.
간단하긴하지만 단일상속이기 떄문에
코로나 스레드가 다른 클래스를 상속을 못받게됨.
(!)기억
메인 메소드도 하나의 메소드다.
#Or4)
Thread.sleep(mili time) - 자바 스레드 대기.
중간에 sleep메소드를 넣어주면, 교환기회가 많아짐
#Or5)
메인스레드는 먼저 끝날 수 있음.
1)thread.sleep을 통해서 끝나는 순서가 바뀔수있음.
2)join
thread.join(); <- 메인이 thread에 join을 건것, thread끝나고 들어갈래.
#Or6)
Order #7) Java Thread 간섭
interrupt.
thread.yield()
실행을 양보하지만, sleep()처럼 대기 상태로 이동안함(대기풀로안가고 바로 런어블).
stop()메소드는 쓰지말자.(강제종료)
Order #8) lock, sychroinized
lock by sychronized.
공유 데이터의 락을 확보한 후, 다른 쓰레드의 접근을 제한하고 배타적인 사용.
- 메소드 단위
- 블록 단위(이게 좋아요)
Order #9) notify, wait
wait() - 나중에 깨워달라.
notify() | notifyAll()- 어떤 요건이 주어지면 깨운다
DeadLock : 서로다른 스레드가 각각 lock을 가지고 다른 thread가 가진 자원을 wait함.
#Generic
<T>처럼 사용하여, 지금 지정안하고 여러 타입이 가능함을 유추?
-> 지금 타입을 알수없으니 이렇게 지정하고가겠따.
#OOP
복잡한 구조를 가지기도하지만,(인터페이스만들고, implements하고, 오버라이딩하고)
더큰 프로그램이 되고 운영할수록 더 단순화되고 쉬워짐.
#익명클래스
재사용 필요가없는 애들.
이벤트 핸들러로 자주 사용.
new Thread(new Runnable(){
public void run(){ sout{
}).start()
#람다식
익명클래스보다 간단
new Thread( () -> System.out.println("람다 스래드 생성")).start();
람다의 더욱 간단한 처리.
stream.forEach( s -> System.out.print(s));
-> stream.forEach(System.out::print);
#functional interface
하나의 추상적메소드에 하나의 인터페이스
메소드 바디안에는 default를 줌.
ex) Runnable, Comparable
ex)
@FunctionalInterface
pbulic interface PatientCareAction{
void whitisyouername();
default void whtatisyoucountry(){
syso();
}
}
#JAVA Stream API
- 원본 데이터를 일련의 약속된 흐름(Stream)으로 처리함.
자료구조를 따로 저장안하고 input -> ouput형태로 취함.
- Stream create -> filter -> map(새로운 스트림으로 만들어버림, 그전은 아님) -> result.
- 고급 Collect, reduce 생략.
ex)
String[] strArray = {"A", "B", "C"};
Stream<String> stream = Stream.of(strArray);
print(stream);// A B C
public static void print(Stream<?> stream){
stream.forEach(a -> System.out.print(a+" "));
}
#Parllet
Stream<String> stream = Arrays.stream(strArray).parallel();
//FHICGEADB -> 랜덤으로 출력
#XML
데이터와 저장과 이동
사람과 컴퓨터가 읽기쉽게 구조화.
어디에많이쓰일까?
빅데이터에 많이씀.(크롤링)
#xml파서
xml문서를 해독하고 유효한 데이터를 가져오는 과정.
DOM-파서
자바에서는 지원함.
안에 데이터를 쓰기위함,
문서전체면 이게더좋다
좀느리다
삭스-파서
이벤트기반으로 변환으빨리
xml
동적으로 박아넣어야할때 사용하기도(사용자마다 다르게)
ex)주식, 금융정보, 날씨
공백도 포함됨
xml tree
노드를 잘타야함.
XML DTD
자동 검사.
도큐먼트 타입인지 검사.
->틀리면 코드단계에서 오류보여줌.
DTD vs 스키마
스키마가 배포가 빠르고 유연성이 좋음.(수정이좋다는말임)
#CDATA
모든텍스트가 마크업이 아닌 문자데이터로 해석되길 원할떄
#SAX
XML문서를 파싱하는 도중 발생하느 ㄴ이벤트에 의해 작동
'자바' 카테고리의 다른 글
[오류] 1-1) pom.xml 첫 line 오류 (0) | 2019.09.17 |
---|