Thread

실행중인 프로그램--> 프로세스라고 부름

Thread는 java.lang에 있기 때문에 임포트가 따로 필요하지 않다.

실행단위안에서의 다른 세부 실행단위이다.

쓰레드가 new가 의해서 탄생되지만 쓰레드 스케줄러에 의해 제어됨

탄생되어도 스케줄러가 쳐다볼 수 있는 영역(runnable)에 들어가야 의미가 있다.

runnable영역에 진입시키는 명령어는 start()

스케줄러가 정하는 우선순위는 나름대로의 내부적 기준이 있다.(프로그래머는 신경안써도 됨)

runnable영역에서 non-runnable 영역으로 떨어뜨리는 메서드 sleep()--> blocked상태라고도 함

1-10까지 1초에 숫자가 하나씩 찍힐려면 runnable영역에서 non-runnable 영역으로

1초에 왔다가 갔다가 해야된다. sleep을 쓰면 지가 알아서 두 영역을 왔다갔다함.

쓰레드의 생명주기!!!

메인메서드도 크게 보면 하나의 스레드이다. (daemon thread)

자바의 실행은 모든것이 스레드로 표현될 수 있다.


Thread는 일반클래스이기때문에 기능구현을 위해 클래스를 두개로 나누어 만들어 왔다.

이걸 하나로 해결하자!!!

Runnable 인터페이스를 사용해서 해결~~!!!

runnable은 메모리에 올리는것은 좀 다름 주의!!!

올릴때 runnable 타겟을 생성자 매개변수로 넘겨줘야함(주로 자기자신)


######
has a관계를 가져오면 관련성이있다.

has a관계로 car가 wheel을 가진다면

car는 wheel에 의존적이다. 의존하고 있다.


화가 : 프로그래머 or 컴포넌트 스스로

*컨테이너류와 캔버스는 프로그래머가 주체가 되어 내용을 채워넣지만

 버튼이나 다른 비쥬얼은 컴포넌트 스스로가 주체다(버튼의 모양이 정해져 있다)

캔버스 : Canvas 객체

붓 : paint() 메서드

팔렛트 : Graphics 객체



 

Posted by Taoist
,