CheerUp_Cheers

JAVA - Thread | Generic | Lamda | Stream |XML 본문

자바

JAVA - Thread | Generic | Lamda | Stream |XML

meorimori 2020. 3. 24. 15:16

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