본문 바로가기

반응형

Java 공부/신용권의 이것이 자바다

ID, 패스워드 설정과 로그인화면을 만들때 참고할만한 Hashtable 위 코드는 자바 Hashtable을 공부하면서 교재에 나와있는 코드를 따라 작성한 것이다.Hashtable은 key 값과 value 값이 쌍을 이뤄서 다니는 배열을 말한다.여기서 key 값은 중복저장이 안되고 value 값은 중복 저장 가능하다.만약, 나중에 같은 key에 다른 value 값을 저장하게 되면, 나중에 한 값으로 교체된다.그렇기 때문에 회원의 아이디와 패스워드를 설정하고 이들 값을 이용해 로그인 화면을 만들 때 매우 유용한 컬렉션이다. Hashtable은 Map 컬렉션에 속한 것으로, 제네릭(Generic)을 활용하면 매우 편리하다.Map map = new HashMap();이 때, key와 value 타입은 주로 String을 많이 사용한다. 한편, Map 컬렉션에서 값을 저장할 때는 p.. 더보기
자바 제네릭(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을 매개값으로 인터페이스 타입의 구현객체를 만.. 더보기
자바는 객체지향 프로그래밍(OOP)이다 자바(Java)의 가장 큰 특징은 '객체지향 프로그래밍'(Object Oriented Programming)이라는 것이다.소프트웨어를 만들 때, 구성요소를 마치 기계의 부품처럼 하나하나 객체(Object)형태로 만들어 조립하는 방식을 '객체지향 프로그래밍'이라고 한다.이를 위해서는 우선 '객체'의 개념을 잘 이해하는 것이 중요하다. 나는 '객체'라는 번역어보다 Object라는 용어를 이용해서 설명해 보겠다.Object는 물질적인 것도 있고 눈에 보이지 않는 시스템적인 것도 있다.눈에 보이지 않음에도 엄연히 물성을 지닌 것으로 자신의 정체성을 분명히 가지고 있는 존재인 것이다.이러한 성질의 Object들 하나 하나가 서로 결합해 다시 복잡한 한 물건으로 만들어지듯, 자바에서도 Object들이 결합해 하나의.. 더보기
자바(java)란 무엇인가? 자바(Java)란 프로그램 언어의 하나로 1955년 '썬 마이크로시스템즈'(Sun Microsystems)에서 개발했다.자바는 전세계 많은 사람들이 사용하고 있는 성공한 프로그램 언어 중 하나이다.자바는 1991년 썬 마이크로시스템즈에서 고안된 '오크'(Oak) 언어에서 출발한다. 오크는 애초 가전제품에 사용될 목적으로 개발되었는데, 인터넷이 발명되면서 프로그램 언어로 쓰였고 이름도 자바(Java)로 변경되었다.처음에는 메모리와 CPU를 너무 많이 차지해 호응이 별로 없었지만, 1999년부터 인터넷이 활성화되면서 웹애플리케이션 구축을 위한 프로그램으로 급성장했다.게다가 오늘날은 스마트폰이나 테블릿, 데스크톱에 해당되는 어플이나 금융, 공공기관의 엔터프라이즈 환경구축을 위한 중요한 프로그램이 되었다.자바가.. 더보기

반응형