스레드를 생성하고 시작하려면 스레드는 다양한 상태를 가지게 됩니다. 스레드의 상태는 자동으로 변경되거나 코드로 변경해서 제어할 수 있는데요. 이번 시간에는 스레드 제어에 대해서 알아보겠습니다. 스레드 상태 우선 스레드의 실행 흐름을 그림으로 알아보겠습니다. 스레드 객체를 생성하고 start() 메서드를 호출하면 바로 실행되는 것이 아니라 실행 대기 상태가 됩니다. 실행 대기상태란 언제든지 실행할 준비가 되어있는 상태를 말합니다. 운영체제는 실행 대기 상태에 있는 하나의 스레드를 선택하고 CPU가 run () 메서드를 실행상태로 만듭니다. 실행 상태의 스레드는 run() 메서드를 모두 실행하기 전에 다시 실행 대기 상태로 돌아갈 수 있고, 실행 대기 상태에 있는 다른 스레드 중에서 하나를 선택해 실행 상태..
동기화 메서드 지난 시간에는 스레드 A를 사용하는 중 스레드 B를 사용하면 스레드 B가 스레드 A의 상태를 변경시켜버려 의도하지 않았던 결과를 얻었는데요, 이를 방지하기 위한 방법을 알아보겠습니다! 스레드가 사용 중인 객체를 다른 스레드가 변경할 수 없게 하려면 스레드 작업이 끝날 때까지 객체에 잠금을 걸어서 다른 스레드가 사용할 수 없도록 해야 합니다. 멀티 스레드에서 단 하나의 영역을 실행할 수 있는 영역을 임계 영역이라 하는데 자바는 임계 영역을 지정하기 위해 동기화 메서드를 제공합니다. 내부의 동기화 메서드를 실행하면 즉시 객체에서 잠금을 걸어 다른 스레드가 동기화 매소드를 실행하지 못하게 해요! 그 방법을 설명드리겠습니다. 동기화 메서드를 만들려면 메서드 선언부에 synchronized 키워드를..
싱글 스레드 프로그램에서는 1 개의 스레드가 객체를 독차지해서 사용하면 되지만, 멀티스레드 프로그램에서는 스레드들이 객체를 공유해서 작업해야 하는 경우가 있습니다. 이때 여러 스레드에서 동시에 한 객체에 접근할 수 있게 되면, 한 스레드에 의해 변경된 객체의 상태가 다른 스레드의 작업에 영향을 미쳐서 의도치 않은 결과를 낼 수 있습니다. 공유 객체를 사용할 때의 주의할 점 멀티 스레드 프로그램에서 스레드들이 객체를 공유해서 작업해야 하는 경우, 스레드 A가 사용하던 객체를 스레드 B가 상태를 변경할 수 있기 때문에 스레드 A가 의도했던 것과는 다른 결과를 산출할 수도 있습니다. User1 스레드가 Calculator 객체의 memory 필드에 100을 먼저 저장하고 2초간 일시정지 상태가 됩니다. 그동안..
안녕하세요 오늘은 스레드(Thread) 2편입니다. 지난번 시간에 스레드란? 에서 Runnable로 스레드를 만들어 보았는데요. 지난 시간 내용입니다 :) 스레드 (Thread) 란? 우선 스레드를 공부하기 전 알고 넘어가야 할 개념이 있는데 프로세스(process)입니다. 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 시행되는데, 이것을 프로세스 itminco.tistory.com 오늘은 Thread를 하위 클래스로부터 생성해 보겠습니다. 작업 스레드가 실행할 작업을 Runnable로 만들지 않고, Thread의 하위 클래스로 작업 스레드를 정의하면서 작업 내용을 포함시킬 수 있습니다. Thread 클래스를 상속한 후 run() 메서드를 재정의(Overriding)해서 스레드가 ..
안녕하세요. 오늘은 코틀린(Kotlin)에 대해서 공부해 보겠습니다. 코틀린(Kotlin)이란, JVM에서 동작하는 프로그래밍 언어입니다. 현재 현업에서도 JAVA에서 코틀린(Kotiln)으로 변환하는 추세입니다. 대표적으로 Android에서 많이 사용이 되고 있습니다. 안녕, Kotlin fun main() { println("안녕, kotlin") } 코틀린 (Kotlin)은 Java와 다르게 class를 따로 선언하지 않고 함수를 선언할 수 있습니다. 우선 함수 fun(Function)의 약자로, 앞으로 나올 코드가 함수임을 나타내는 키워드입니다. 함수는 그저 명령어들을 담아 놓는 상자라고 생각하시면 됩니다. 이름이 main인 함수는 프로그램의 시작점입니다. 함수는 거저 명령어들을 담아 놓는 상자라..
우선 스레드를 공부하기 전 알고 넘어가야 할 개념이 있는데 프로세스(process)입니다. 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 시행되는데, 이것을 프로세스라 합니다. 그리고 내부에서 코드의 실행 흐름을 스레드(Thread)라고 하죠. 운영체제는 두 가지 이상의 작업을 동시에 처리하는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다. 스레드(Thread)의 뜻은 한 가닥의 실이라는 뜻이다. 한 가지 작업을 실행하기 위해 순차적으로 코드를 실처럼 이어 놓았다 해서 유래된 이름이다. 멀티 프로세스는 OS(운영체제)에서 할당받은 자신의 메모리를 가지고 실행하기 때문에 각 프로세스는 서로 독립적이다. 따라서 하나의 프로세스에..
상수란? 변하지 않는 값을 말한다. 상수의 이름은 대문자를 주로 대문자를 사용하며, 여러 단어를 연결할 경우에는 _를 사용한다. 한번 선언한 상수는 값이 면하지 않기때문에 동시에 값을 지정하는 것이 좋다. 상수를 사용해야 하는 경우 - 값이 변하면 위험한 경우에 상수를 사용 - 값만 봤을때 무엇을 의미하는지 쉽게 파악할 수 없는 값에도 값 자체를 사용하기 보다는 상수를 사용
01. Hello world 문장 출력 기본적으로 이클립스에서 클래스를 만들때 main함수를 체크해주면 이런 모양의 코드가 자동적으로 작성이 됩니다. 그후 Systam.out.println("Hello World"); 입력해 줍니다. Systam.out.println("Hello World"); // Hello문장을 출력해라. ;(세미콜론)은 문장의 마침표 역활을 합니다. 여기서 .(도트)는 이클립스의 자동완성기능 입니다. 도트를 적어준후 (컨트롤 + 스페이스)를 누르면 자동완성기능이 실행 됩니다. System.ou.println();를 정리 Systam은 java.lang패키지 에 속하는 클래스이다. 따라서 import를 하지 않아도 바로 쓸수가 있다. java.lang.System 클래스 내부에 존대..
SELECT 구와 WHERE구 SELECT 열 1, 열 2 FROM 테이블명 WHERE 조선식 SELECT 구, WHERE 구에서 데이터 검색조건을 지정 행을 선택할때선택할 때 WHERE 구를 사용하며, 열을 선택할 때는 SELECT 구를 사용한다. 1. SELECT 구에서 열 지정하기 데이터를 선택할 때는 열이나 행을 한정한다. SELECT명령에서는 *를 사용해서 sample21 테이블의 모든 열을 취득했다. 열을 한정하기위해서는 *부분에 열명을 지정한다. SELECT 열1, 열 2... FROM 테이블명 열은 위의 구문처럼 콤마(,)로 구분한다. no의 열과 name의 열만 선택하여 검색했다. select from sample21;과 같이 열을 지정하지 않으면 구문 에러가 발생한다. 또한, 테이블을 ..
DESC명령어 - 테이블 구조를 참조하는 방법에 대한 학습. DESC 테이블명; sample21 테이블을 참조 ↓ Field는 열의 이름이 표시되며, Type는 열의 '자료형'을 나타낸다. int는 정수형(숫자)을 의미하고 varchar(20)은 문자를 의미하는데 괄호 안에 숫자는 최대 길이를 말한다. Null은 값을 허용할 것인지 아닌디를 나타네는 제약사함으로 Yes를 지정하면 Null 값을 허용하게 된다. Key는 해당 열이 '키'로 지정되어있는지를 나타난다. Default는 그 열의 주어진 '기본값' 즉, 생략했을 경우 적용되는 값이다. (행을 추가할 때 열의 데이터 값을 생략하면 이 기본값으로 채워진다.) 자료형 - integer, char, varchar, date, time 열에는 몇 가지 속..
1. SELECT * FROM 테이블명; 실행하기 MySQL cmd 창에서 로그인, sample DB 조회 select * from 테이블명; 테이블을 검색하겠다는 명령어. ;(세미콜론)을 붙이지 않게 되면 실행되지 않고 계속 문장을 이어 나갈 수 있다. point :mysql 클라이언트에 SQL 명령을 입력하여 실행할 수 있다. 이때 SQL 명령어 마지막에는 세미콜론(;)을 붙인다. ㅇselect 는 검색하는 명령어이고 *(아스타)는 모든 열을 뜻한다.. SELECT * FROM sample21; 예약어 테이블명 select 와 from은 구를 결정하는 키워드이자 예약어이다. 통상적으로 데이터베이스 객체명은 예약어와 동일한 이름을 사용할 수 없다. 예를 들면 select라는 테이블 명을 만들 수 없다는..
알고리즘이란 무엇일까요? 알고리즘이란 문제를 해결하기위한 여러 동작들을 말합니다. 즉, 조건을 만족하는 해결 방안이 될수 있겠죠? 입력 , 출력, 명확성, 유한성, 효율성 의 조건을 만족해야해요. 입력, 외부에서 제공되는 자료가 0개이상 존재 해야합니다.출력. 모든 입력에 하나의 출력이 나와야 합니다.명확성, 수행한 과정은 면확하고 모호하지 않은 명령어로 구성되어야 합니다.유한성, 유한 번의 명령어를 수행 후에 종료해야합니다.효율성, 모든 과정은 명백하게 실행(검증)이 가능 해야합니다. 우선 짧은 예제를 통해 알아볼께요. 3개의 정수값 가운데 '최댓값'을 구하는 프로그램입니다.변수 a, b, c 에 들어가는 값은 키보드에서 입력한 값이며, 그 3개의 값 증 퇴댓값을 변수 max로 찾을 수 있습니다. 여기..