본문 바로가기

반응형

전체 글

주사위 던지기 자바 코드 작성하기 이 코드는 자바(Java)로 구현한 주사위 던지기 코드이다. 1에서 6까지 숫자를 랜덤으로 뽑는 것을 보여준다. 이것을 반복적으로 실행하면, 계속해서 랜덤으로 뽑힌 정수(Int) 타입의 숫자가 콘솔창에 뿌려진다.중앙의 괄호 안의 (Math.random()*6)이 바로 주사위의 6개의 경우의 수를 담고 있다.6대신 다른 숫자를 넣으면, 그 숫자들 중 하나가 랜덤으로 뽑힌다.숫자를 바꾸면 다양한 방법에 활용할 수 있을 것 같다. 더보기
자바 제네릭(Generic) 요약정리 제네릭(Generic)은 자바5부터 새롭게 추가된 기능으로, 컴파일시 타입을 강하게 체크해서 미리 에러가 일어나는 것을 방지해 준다.또 타입변환을 꼭 해야 하는 상황일 때, 제네릭을 사용하면 타입변환을 해주지 않아도 된다.위 코드는 제네릭을 사용하는 방식을 보여준다.선언을 할 때, 클래스나 인터페이스 이름 뒤에 부호를 붙인다. 안에는 타입 파라미터가 위치한다. 안에 타입 파라미터는 일반적으로 알파벳 대문자 한 글자로 쓴다.개발 코드에서는 타입 파라미터 자리에 구체적인 타입을 지정해야 한다.제네릭 타입은 두 개 이상의 멀티 타입 파라미터를 사용할 수 있는데, 이 경우 각 타입 파라미터를 콤마로 구분한다.제네릭 메소드는 매개타입과 리턴타입으로 타입 파라미터를 갖는 메소드를 말한다.제네릭 메소드를 선언하는 방.. 더보기
스레드풀(ThreadPool)에서execute()와 submit()의 차이 병렬작업 처리가 많아지면, 스레드 갯수가 증가하게 되면서 CPU가 바빠져서 메모리 사용량이 증가한다. 이것은 곧 애플리케이션 성능 저하로 이어지게 된다. 갑작스런 병렬 작업의 증가로 인한 스레드폭증을 막기 위해, 스레드풀(ThreadPool)을 사용한다. 스레드풀은 작업처리에 사용되는 스레드의 숫자를 정해 놓고 작업 큐(Queue)에 들어오는 작업들을 하나씩 맡아 처리하는 것을 말한다. 즉, 스레드 갯수를 정해놓고 늘리지 않으면서 작업처리가 끝난 스레드가 다시 작업 큐에서 새로운 작업을 가져와 처리하는 식이다. 그러므로 작업요청이 늘더라도 스레드의 전체 갯수가 늘어나지 않아, 애플리케이션의 성능이 급격히 저하되는 것을 막아준다. 자바는 스레드풀(ThreadPool)을 위해서 java,util.concur.. 더보기
스레드(Thread) 상태를 재어하는 메소드(Method)들 스레드는 공유객체를 함께 사용하는 만큼, 원할하게 작동시키기 위한 다양한 실행 메소드(Method)들이 존재한다.다른 객체가 공유객체를 사용하는 동안 일시정지해 있거나 대기상태에 있어야 할 때도 있다.스레드가 잘 작동하도록 하기 위해서는 다양한 제어방법을 잘 알고 활용할 줄 알아야 할 것이다. 이에 앞서 '스레드 상태'(state)를 먼저 이해할 필요가 있다.스레드 상태에는 객체생성, 실행대기, 일시정지, 종료가 있다.1) 객체생성(열거상수 NEW): 스레드 객체가 생성, 아직 Start() 메소드가 호출되지 않은 상태2) 실행대기(RUNNABLE): 실행상태로 언제든지 갈 수 있는 상태3) 일시정지(WAITING): 다른 스레드가 통지할 때까지 기다리는 상태, (TIMED_WAITING): 주어진 시간.. 더보기
스레드(Thread)에서 동기화(Synchronized) 메소드와 동기화 블럭 멀티스레드작업을 실행하는 데 있어서 한 스레드가 작업을 하는 동안 다른 스레드가 변경할 수 없도록, 스레드 작업이 끝날 때까지 객체에 잠금을 걸어서 다른 사용할 수 없도록 하는 것이 필요하다. 이렇게 멀티스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드 영역을 임계영역(critical section)이라고 한다.Java에서는 임계영역을 지정하기 위해 '동기화(Synchronized) 메소드'와 '동기화 블럭'을 사용한다.이들이 선언되면, 객체에 잠금을 걸어서 다른 스레드가 임계영역 코드를 실행하지 못하도록 한다.먼저, 동기화가 선언되지 않았을 때의 멀티스레드 작업을 살표보자.먼저, 스레드 두 개를 사용할 때 각각 2초의 일시 정지 상태를 가진 뒤, 다시 작업을 실행해 그 메모리값을 출력하는 클.. 더보기
멀티스레드(Multi Thread) 연습 정말 오랜만에 다시 컴퓨터를 켜고 자바(Java) 프로그래밍 공부를 했다.그중에서도 오늘은 수업을 진행할 때, 복습하지 못한 멀티스레드 개념과 그것을 구현하는 프로그램을 작성해 보았다.멀티스레드는 하나의 프로세스에 여러 개의 스레드가 작동하는 것을 말한다.싱글스레드 애플리케이션에서는 메인 스레드가 종료되면 프로세스도 종료된다.하지만 멀티스레드 애플리케이션에서는 실행중인 스레드가 하나라도 있다면, 프로세스는 종료되지 않는다.즉, 메인스레드가 작업스레드보다 먼저 종료되더라도 작업 스레드가 계속 실행 중이라면 프로세스는 종료되지 않는 것이다.스레드를 생성하는 방법에는 크게 세 가지가 있다.1) 그 중 하나는 스레드 클래스로부터 직접 생성하는 것으로, Runnable을 매개값으로 인터페이스 타입의 구현객체를 만.. 더보기
MySQL로 테이블 생성하기 이 MySQL 화면은 지난 달 팀프로젝트를 하면서 내가 맡은 화면을 구현하기 위해 작성한 데이터베이스 쿼리문이다.나는 피자 레스토랑의 매장선택을 맡았다.그것을 위해 첫번째로 할 것이 매장 리스트를 데이터베이스화 하는 것이었다.데이터베이스는 내가 가장 잘 하는 MySQL로 작성하기로했다.'store code'란 항목을 넣어 이것을 Primary Key로 정했다.MySQL에서 Primary Key는 필수적이다. 한편, VARCHAR는 문자를 입력할 때 사용하는 태그로, 남은 빈칸을 없애고 정렬시켜주기 때문에 많이 사용하는 태그이다.나는 거의 대부분의 항목을 VARCHAR태그를 이용해서 작성했다.MySQL에서 숫자는 'INT' 태를, 날짜는 'DATE' 태그를 쓴다.INT 태그는 수량이나 가격과 같은 숫자를 .. 더보기
달력으로 책표지싸기 ​​표지를 모두 씌운 이 책들은 몇 달 동안 공부한 자바 프로그래밍 교재들이다.나는 이 책들을 모두 튼튼한 달력으로 싸서 가지고 다녔다.책을 포장하는 종이로는 달력만큼 좋은 것이 없다.​책표지를 싸서 다닌 건 이번만은 아니다.나는 독서를 할 때는 대부분 표지를 포장해서 읽는 편이다.도서관에서 빌린 책이나 내가 산 책, 구분하지 않고 깨끗하게 보기 위해서 읽기 전에 표지부터 싼다.​이건 사실 옛날 습관 때문일 것이다.초등학교를 다닐 때부터 나는 학교에서 무상으로 받은 교과서를 깨끗하게 싸서 가지고 다녔다.당시 책은 모두 아버지가 싸 주신 것이었다. 아버지는 신학기마다 새책을 받아온 날 저녁에는 그동안 모아놓은 해지난 달력들을 꺼내와 우리들 책을 싸주셨다.아버지는 꼭 달력의 새하얀 면을 활용하셨다.새하얀 표.. 더보기

반응형