달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2018. 5. 17. 09:27

[Git] Eclipse git 사용법 스터디 /7. 형상관리2018. 5. 17. 09:27

프로젝트를 같이 하다보니 소스관리할때 이클립스에서 깃을 사용하기로했다.

대략적인 개념은 알고있는데 ㅋㅋㅋ 혼동되기도하고 일단은 필요한거만 정리 ! 


--

도움이 된 링크를 정리한다


A B개발자가 Git을 함께쓴다고 가정하고 올린글..

http://lng1982.tistory.com/177


나는 지금 총3명이서 깃으로 진행중인데.. 올리는 방법에 대해서는 냐중! 지금은 사용법이 우선!


중요한건 마스터 아래 브랜치를 따서 관리할때 


내가 내이름의 branch를 따서 작업하다가 master로 커밋하고싶으면.. 


내이름의 branch에서 일단 커밋을 하고 


sitch to -> master로 전환한뒤에 


team -> Merge로 병합을 한다 .



깃입문관련 자료다 -->https://backlog.com/git-tutorial/kr/stepup/stepup1_1.html

이해하기 쉬움                                                                                               

:
Posted by Gongdile

음 이런 내용에 대해 꼭 알아야해! 완전 중요해! 필수야! 이런건아니지만.. 

알아서 나쁠거없고 다 차곡 차곡 쌓이는 지식이기 때문에 ㅎㅎㅎㅎ ! 


정리를 해본다.. 


쓰레드 그룹은 말그대로 thread group이다 ㅋㅋ 

서롸 관련된 쓰레드를 그룹으로 다루기 위한걸로 폴더를 생성해서 관련된 파일들을 함께 넣어서 

관리하는 것처럼 쓰레드 그룹을 생성해서 쓰레드를 그룹으로 묶어서 관리할 수 있다. 

폴더 안에 폴더를 넣는거마냥 

쓰레드 그룹에 다른 쓰레드 그룹을 포함시킬수도 있는데 


쓰레드 그룹은 보안상의 이유로 도입된 개념이라고 한다.(자세한건 더 찾아봐야할듯)

자신이 속한 쓰레드 그룹이나 하위 쓰레드 그룹은 변경할 수 있지만 

다른 쓰레드 그룹의 쓰레드를 변경할수는 없는부분?!


자바에서 ThreadGroup을 사용해서 생성할 수 있고, 주요 생성자와 메서드를 제공한다. 

쓰레드는 반드시 쓰레드 그룹에 포함되있어야하기때문에


쓰레드 그룹을 지정하는 생성자를 사용하지 않은 쓰레드는 기본적으로 

자신을 생성한 쓰레드와 같은 그룹에 속한다. 


자바 어플리케이션이 실행되면 JVM은 main과 system이라는 쓰레드 그룹을 만들고 JVM운영에 필요한 쓰레드를 생성!

그리고 그 쓰레드 그룹에 포함시킨다. 


ex) main메서드를 수행하는 main이라는 이름의 쓰레드는 main쓰레드 그룹에 속하고, 

가비지 컬렉션을 수행하는 Finalizer쓰레드는 system쓰레드 그룹에 속한다. 


우리가 생성하는 모든 쓰레드 그룹은 main쓰레드 그룹의 하위 쓰레드 그룹이 되며, 

쓰레드 그룹을 지정하지 않고 생성한 쓰레드는 자동적으로 main쓰레드 그룹에 속하게된다. 



음 내가 이걸 정리하면서 느끼는건 아.. 이런게 있구나 !_! 

쓰레드그룹이라는게 있고 이렇게 사용하는구나..! 

나중에 정리해야할 일이 있으면 그때 더 자세히.. 


<데몬스레드(daemon thread)와 일반 스레드(non-daemon thread)>


자바에서 스레드는 두가지 종류로 구분된다.


첫째는 데몬 스레드(daemon thread)인데 JVM이 스스로 필요에 의해 사용하는 스레드이다. 

데몬쓰레드는 다른 일반 쓰레드의 작업을 돕는 보조적인 역학을 하는 쓰레드라서 

일반 쓰레드가 모두 종료되면 데몬 쓰레드는 강제적으로 자동 종료된다. 

-->데몬 쓰레드는 일반 쓰레드의 보조역할을 수행하기때문에  일반스레드가 종료되고나면 

    데몬쓰레드의 존재의 의미가 없기 때문이다. 

(JVM은 응용프로그램에서 생성한 일반 스레드가 하나라도 살아 있는 한 실행을 계속 한다.)

이 점을 제외하고는 일반쓰레드와는 다르지 않다. 


ex))가비지컬렉터, 워드프로세서 자동저장, 화면 자동갱신 등이있다.. 

가비지 걸렉터가 대표적인 데몬스레드인데 응용프로그램에서 작성한 스레드를 데몬스레드로 표시해서 

JVM이 데몬스레드로 인식하게 할 수도있다.


데몬 쓰레드는 무한루프와 조건문을 이용해서 실행 후 대기하고 있다가 특정 조건이 만족되면 

작업을 수행하고 다시 대기하도록 작성한다.

--

데몬쓰레드는 일반스레드의 작성방법과 실행방법이 같다.

 다만 

쓰레드를 생성한 다음 실행하기 전에  setDaemon(true)를 호출하기만 하면 된다. 

(데몬스레드가 생성한 쓰레드는 자동적으로 데몬쓰레드가 된다! )

 


일반쓰레드 (non-daemon thread)는 응용프로그램에서 생성한 스레드이다. 

main( )메소드도 대표적인 일반쓰레드다. 


:
Posted by Gongdile

쓰레든느 우선순위(priority)라는 속성(멤버변수)를 가지고 있다. 

이 우선순위의 값에 따라 쓰레드가 얻는 실행시간이 달라진다. 


쓰레드가 수행하는 작업의 중요도에 따라 쓰레드의 우선순위를 서로 다르게 지정하여 특정 쓰레드가 더 많은 작업시간을 갖도록 할 수 있다. 


예를들어서 내가 카카오톡을 하는데 파인을 다운로드 처리하는 쓰레드보다 채팅 내용 전송하는 쓰레드 우선순위가 더 높아야

채팅하는게 불편함이 없을거다.

카카오톡 하는데 사진다운 받는동안은 채팅을 못한다던가.. 기다려야한다던가 이러면 엄청 불편할것이다. 


이렇게 시각적인 부분이나 사용자에게 빠르게 반응해야하는 작업을 하는 쓰레드의 우선순위는 다른 작업을 수행하는 쓰레드에 비해 높아야 한다.



<쓰레드의 우선순위 지정하기>


쓰레드의 우선순위와 관련된 메서드와 상수는 다음과 같다. 


void setPriority (int newPriority)  쓰레드의 우선순위를 지정한 값으로 변경한다.
int getPriority()                         쓰레드의 우선순위를 반환한다.
 
public static final int MAX_PRIORITY    = 10 //최대 우선순위 
public static final int MIN_PRIORITY     =  1 //최소 우선순위 
public static final int NORM_PRIORITY  =  5 //보통 우선순위 


쓰레드가  가질 수 있는 우선순위 범위는 1~10이고 숫자가 높을수록 우선순위가 높다. 

알아둬야할건 쓰레드의 우선순위는 쓰레드를 생성한 쓰레드로부터 상속받는다는 것이다. 


main메서드를 수행하는 쓰레드를 우선순위가 5이므로 main메서드 내에서 생성하는 쓰레드의 우선순위는 자동적으로 5가 된다.


-->우선순위는 쓰레드를 실행하기 전에만 변경할수 있다! 

그치만 

(싱글 코어 가정)

두쓰레드의 우선순위가 같은경우시 작업하는것과 

t1이 t2보다 우선순위가 높은경우 에 작업하는것을 비교한다면 


우선순위가 같은 겨웅네는 각쓰레드에 거의 같은 양의 실행시간이 주어지지만, 

우선순위가 다르다면 우선순위가 높은 t1에게 상대적으로 t2보다 많은 양의 실행시간이 주어지고

-->결과적으로 작업 A(t1담당)가 작업 B(t2담당)보다  더 빨리 완료될수 있다. 


그러나 멀티코어에서는 쓰레드의 우선순위에 따른 차이가 거의 없었다. 

-->쓰레드에 높은 우선순위를 주면 더 많은 실행시간과 실행기회를 갖게될거라고 기대할수는 없다는거..ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 


그래서 굳이 우선순위에 차등을 두어 쓰레드를 실행하려면, 특정 OS의 스케쥴링 정책과 JVM의 구현을 직접확인해 봐야하는데 


차라리 쓰레드에 우선순위를 부여하는 대신 작업에 우선순위를 두어서 Priority Queue에 저장해놓고, 우선순위가 높은 작업이 먼저 처리되도록

하는게 나을수도 있다.! 



:
Posted by Gongdile