[JAVA]쓰레드 동기화 및 실습 [국비]자바기반 응용SW과정 /일지 2018. 4. 19. 16:19
2018_04_19_목
모든프로그램메인에서 시작
국비수업에서 만든다는건 ->new의미 //클래스로 준비되어있는놈의미
스레드없이 자동움직이는 프로그램을 만든다? -->놉! 불가능! 뀨뀨!
-----------
스레드구현방법은
스레드를 상속받거나 러너블이라는 인터페이스를 구현하는 방법이다..
start는 run이라는함수를 호출해주는함수
왜 start를 굳이해주냐 ??
쓰레드는 하드웨어적으로 직접실행이라 바로실행하는걸 부담시러워함
그래서 안전하게 start라는메소드를 호출하게해서
시스템내에서 체크가이루어지고 아무이상없으면 시작 !
--
앞으로 안드로이드 공부하게되면 통신관련해서 어떤일을해야한다하면
무조건쓰레드임
스마트폰관렪서 통신해야할일많음
그래서어쩔수업싱 쓰레드관련해서 공부할수밖에엄슴 ㅋㅋ..
NANR- >안드로이드가 반응이없다..맵이멈춰버리는 다운되는. .
이럴때 메모리킬! 이상태벌어짐 주기버림 다른앱싷ㄹ행되게
그래서 안드로이드에서 쓰레드가 메인을 못건드리게함
주소를저장하는변수
뉴가하는일세가지
램에 클래스를 만들어놈 .-> 인스턴스 한국말로 객체
클래스가객체가됨 실체객체를만들어줌
만들어준 주소가 반드시이슴 그 주소를 반드시 변수에넣음
그레퍼런스변수가 인스턴스를 가르키게됨
그래서 레퍼런스변수 똔느 인스턴스변수 라고하는거임 그리고 일반변수 프리미티타입
멤버변수는뭐냐? 클래스를 이루는 멤버변수.. 필드라하는데
그 클래스를이루는함수 그걸함수ㄹ안하고 메서드라 부르지
씨언어의 외부변수 사용해봄?
예를들어 메인이있음
int x=5;
main(){
int x=15; //지역변수
while(){
int x=25; //이안에서는 x가 25임 지역깡패님 지역변수
왜지역변수냐 고지역변수에서만놈 여기를빠져나오는순간사라짐
자동변수라고도함. .ㅋㅋㅋㅋ
}
}<--요애를 블럭이라고함
근데밖에 sum이라고다른함수가있다.
sum(){
x -->>얘뭐찍힘? 5지 전국짱..전역변수라함 ㅎㅎ
}
근데자바에서는 쟤네전체를 크래스로묶음
class test{
int x=5; 전역변수 ->필드라캄
main(){ c에서함수라한거를 자바에서는메소드라함
int x=15; //지역변수
while(){
int x=25; //이안에서는 x가 25임 지역깡패님 지역변수
왜지역변수냐 고지역변수에서만놈 여기를빠져나오는순간사라짐
자동변수라고도함. .ㅋㅋㅋㅋ
}
}<--요애를 블럭이라고함
근데밖에 sum이라고다른함수가있다.
sum(){
x -->>얘뭐찍힘? 5지 전국짱..전역변수라함 ㅎㅎ
}
}
c언어에서는 test.c 자바에서는 test.java
시언어에서 파일하나를 자바에서는 클래스라고함..
씨언어잘하는데 자바못하면 개바보임
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
단지왜어렵냐 용어가 너무많음 자바는 ㅋㅋㅋㅋ
우리는클래스맨들면
씨언어는전부다스태틱이라보믄댐
자바는 스태틱제외하고는 만들어져서
new로 맨들어씀 ..
스캐너에들어있는 next int 같은거 new로만들어줘야지
레퍼런스변수,생성자 (클래스이름과똑같은이르므이함수),생성자호출
걔가실행되니까문제가뭐냠 상속을받아버리니까 자식생성햇더니
부모생성자 자동호출됨
이런거공부할라하니까머리터짐
---------
구조를익히고나면 잘넣으면됨자바찡
---------------
안드로이드는 자바클래스만이용하는거임 ㅇ_ㅇ
다클래스로준비되어있음
손가락으로 톽! 플리핑이라함
똑같은속도움직이는거 스크롤링
우린자바에서 무브라카고..드래그라하고..형태는똑같음 이름만달름
콤보박스를 안드로이드에서 스피너라캄
그래서완벽하게구조알고들어가면
할때편함 큐큐큐
네비게이션기능/롤링,피칭.. 등등등 plaplapla
-----------------------
그래서 sdk ndk pdk개발자 /그래서 단계별로 외우는거
어디취업해서1년동안 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
샤람이됨..죤냐게공부하기.. 일년되면다암..
아무리날고기어도취업시켜노면 일년되면똑같아짐 다사람취급을 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
------------------------------------
//학원다니는동안 기본에충실하자
--
기본적으로문법이나개념에 충실하면 짜집기잘할수이슴
내가윈도우로 창하나만든다할때..ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
c->c++->win API->MFC ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ씨언어찡..
-------------
첨에 mfc안나온거 winapi로공부해서즘 윈도우운영구조 알아야함
------
시슈템프로그래먼 ->c언어에대해서알아야함 .
지금나가는것들은거의클래스사용법임
--------------
Thread와 Runnnable이 있었음
스레드는 클래스로 러너블은 인터페이스임
따라서 제는 익스텐트 쟤는 임프리먼트로 받아야함
둘다 런이라는메소드 오버라이딩해놓음됨
마이쓰레드라는놈으로 상속받는다면
MyThread t = new MyThread()
t.start(); //하면 저 런안에가 막실행됨
run {
}
마이투가 샹쇽받는다면
My2Thread tm = new My2Thread();
Thread tmm=new Thread(tm);
생성자로 한번감싸야함. . 쓰레드안에다가 내가맨든거 감싸야함
tmm.start();
근데 만들어서 집어넣으나 걍집어서서 쓰나 도긴개긴
쓰레드를사용하다보니까
------
오늘뭐나가냐 생성자 스레드 소비자스레드 가이슴
생성자스레드 맨들어서 안에다 차곡차곡넣음
근데 안에가꽉차면 집어넣을수엄슘
그럼 대기보다 쉬는게나음
소비자스레드는 계속꺼내서씀 근데 다꺼내씀
그럼 더이상꺼낼게없음 그럼쉬는게나음
이소비자쓰레드는 채워진건신경안서도됨 대신비엇는지가 걱정됨
비어잇음 쉬믄댐
비어서쉬고있는데 얘가만들어서 쉬고있었음
그럼어케함? 깨워줘야지 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
야 갖다채움 가져가야지
깨워줌
저안에있는놈 공통객체..
콜렉션클래스사용해서 집어넣고 어레이리스트같은거사용해서
20개넘어가면 야쉬삼~~ 니가쉬삼~하고프로그래밍하면
스레드적절하게사용해서 시물레이션프로그래밍도 가능함 뿅!
스레드의 동기화
우리가 atm의 동기화를 생각해보자
동시에 접근시에 동시에빠져나가? 이럼 큰일남
동시에접근하는걸 못하도록하기위해서 동기화작업을 진행해야함 ㅎㅅㅎ
예를들어 두군데에서동시에 접근을햇음
내부적으로 락걸어주는게
synchronise라고 함수앞에 선언해버림
싱크로나이즈라고 선언하면 선언되어있는 이함수가 실행되고있는 동안에는
다른스레드가 접속하면 다른함수 대기하고있게됨
다실행하고끝나면 그때 락풀기 그래야 그때인출할수이슴
그럼그때 돈이없음 뀨뀨
a라는 쓰레드가 가라는함수호출해씀 가라는함수에서 나라는함수호출
여기서비라는쓰레드가 나를호출 나에서 가를호출
이렇게생겨먹은 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 그런데 얘네들이다 싱크로나이즈가 걸려있음 비가실행행해서가를호출해봐 되게씀? 노노
에이에서 가에서 나호출할라햇는데 호출되겟음? 노노 à이런경우를 교착상태의 기아상태 라고함
파워를뽑아야함ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 요런걸조심하기
공통으로 접근안하게할려면그 임의의 코드블록을 임계영역으로 지정해서ㅕ 싱크로나이즈 하는방법도이슴
공통으로 실행안됫으면 하는부분을 묶어서 뿅..
대부분 일반적으로 함수앞에다써주지만 대신 예를들어
쓰레드의 실행되야할내요이 너무많아 근데그중일부분만 이게포함된다면
다른부분실행되야하기 때문에 적절하게 싱크로나이즈블록사용해서 하면될거같다
Th.join()은 뭐냐
자바는 메인이끝나면 프로그램이 끝나자늠 그러면 화면에서 프레임은 사라졋음 근데 음악소리는 계속 나겠지
화면은사라졌는데 음악은안멈춤
왜> 메인은화면을없앴는데 메인에서만든 쓰레드가 소리를만드는줌임 음악
스레드가끝날때까지 윈도우가 사라지지않는거 이게 조인임
691쪽부터 실습문제 요거.. 1번부터 쭉 5번까지 해보기
예제 2 화면하나에 레이블붙여놓고 카운팅시작하는거
예제를 스스로하는것도 중요하지만 예제를 통해서 해보는것도 중요함 1번부터 5번까지 한번내용을 쭉 읽어보기 ..
연습문제 1~5번으로공부하기 처음부터짜는거 너무고민하지말기
시간이 좀 많이 걸림
스레드를 이용하지않는 프로그램이없기 때문에 한번 해보기
--
13-4예제
랜덤함수 수시로 좌표값바구기
범위를한정해서 바꾸는거 왜냐면 너무넓ㄱ세왓다갓다하면 진동같지않으니까
------------------2번예제랑 3번예제랑 5번예제 나갔는데
지금 일단 정리해둔거 올린거라서 오타도많고 좀 더러운데 나중에 수정하기
'[국비]자바기반 응용SW과정 > 일지 ' 카테고리의 다른 글
2018-05-02 C언어 수업 (0) | 2018.05.02 |
---|