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 객체