분류 전체보기
-
Thread의 StateJAVA/Thread 2020. 10. 12. 18:17
프로그램 실행결과 소스 파일 StatePrintThread클래스의 run함수에서 targetThread 스레드가 NEW상태면 targetThread 스레드의 start함수를 호출하는 내용이다. 그리고 나서 targetThread 스레드의 상태가 종료 상태이면 작업을 종료한다. TargetThread 클래스의 run함수의 맨 마지막 sleep함수를 주석처리하고 실행을 해보자. * 1.StatePrintThred객체는 스레드로 동작하며 작업을 계속진행하는 객체이다. * 2.위의 객체를 생성하면서 다른 쓰레드 객체를 전달받아 저장한다. * 3.저장된 객체는 start()함수를 이용해 실행되지 않은 상태이다. 이 때 getState()함수를 이용하여 현재 상태를 확인할 수 있다. * 4.start()함수가 실행..
-
스레드 자원의 동기화 (키워드 synchronized)JAVA/Thread 2020. 10. 12. 17:59
우선 앞에서 스레드는 시 분할 방식이라고 하였다. 예제1 프로그램 실행결과 소스 파일 예제2 위의 소스를 계속 실행해서 프로그램 결과는 세 종류로 나뉜다. case1 case2 case3 소스 파일 위의 소스에서 Sleep함수의 주석을 제거해보자. 주석을 제거한 부분은 아래의 클래스이다. 프로그램 실행결과 일반적인 경우라면 USER1에서 100의 값이 출력되어야 하는데, 200이 출력 되는 이유는 Sleep함수 때문이다. User1 쓰레드가 작업을 하려고 할 때 메모리 변수에 100값을 저장하고 나서 바로 2초 간의 지연이 발생하는데, 이 때 User2쓰레드가 시작 되어 메모리 변수에 200값을 저장하고 나서 이 User2 쓰레드도 2초 간의 지연이 발생한다. 이 때 메모리 변수에는 200값이 저장되어 ..
-
PropertiesJAVA/Collection Framework 2020. 10. 12. 11:57
Properties - 속성값 부여를 목적으로 한다. Properties는 Map으로 만들어진 클래스이다. 프로그램 실행결과 소스 파일 다른 예제 소스 코드 import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; public class temp { public static void main(String[] args) throws NamingException { //특정 객체 생성시 생성자에 초기값으로 속성값을 주는 역할을 한다. Properties p = new Properties(); p.put(Context.INITIAL_C..
-
JVM Memory 운용 ModelJAVA/JVM 2020. 10. 11. 20:59
1. System Memory Model java Test이 발생하고나서의 상황 --------------------------------------------- - 구획별 메모리는 64KB단위로 구분되어 있다. ┌───────────┐CS: Code Segment │[코드 영역] │ │Test Class의 Source가 │ │등록되는 영역 │ ├───────────┤DS: Data Segment │[Data 영역] │ │static변수, │ │static 메소드 저장 │ │main() │ │객체를 만들지 않아도 │ │이영역의 요소 사용가능│ ├──────────-┤SS: Stack Segment │[Stack 영역] │ │메소드가 사용하는 영역│ │메소드 안에서 선언되는│ │지역변수가 선언, │ │메소..
-
final(상수)JAVA/KeyWord 2020. 10. 11. 17:49
상수 선언 : public static final int 변수명 = 값; - 고정된 같은 값이 반복해서 쓰이는 경우 상수를 이용하면 유지보수 시간을 절약할 수 있다. - public: 누구나 사용할 수 있음. - static: 객체를 만들지 않고도 사용 할 수 있음. - final: 변수의 값을 변경할 수 없음. - int: 정수를 저장함. - 상수의 예: . 1년 365, 1주일 7일등 로직상에서 변하지 않는 고정된 값 또한 상수의 대상이 된다. . 상수 사용이 많은 클래스: Calendar Class 등 프로그램 실행결과 소스 파일
-
상속을 이용하여 도형의 넓이 구하기JAVA/Interface 2020. 10. 11. 17:10
문제 도형(원, 삼각형, 직사각형)의 넓이와 둘레 구하는 공식은 인터넷을 검색해서 확인하세요. 1. 삼각형의 넓이는 헤론의 공식을 참고하세요. 넓이 = Math.sqrt(s(s-a)(s-b)(s-c)) s = (a+b+c)/2 2. Shape 인터페이스를 원과 삼각형과 직사각형 클래스에 구현하세요. (implement -> 넓이와 둘레는 오버라이딩 해야 합니다.) 3. main()메소드가 있는 MainTest에서 각각 도형은 interface type으로 형변환 합니다. ( Shape s = new 원(10); s = new 삼각형(10,10,10); ) 4. 각 도형의 멤버변수는 생성자를 통해서 초기화 해주세요. 5. java.text.DecimalFormat 객체를 이용해서 소수점 2째 자리까지 표현..
-
익명JAVA/Interface 2020. 10. 11. 14:48
1. 인터페이스로 익명class, 익명객체 생성 프로그램 실행결과 프로그램 분석 위의 문장은 객체가 없어서 메모리에 만들어졌다가 바로 소멸한다. 위와 같이 문장을 작성하면, 함수를 호출할 수 있다. 익명 객체를 동적으로 생성했다가 필요없으면 바로 소멸된다. 소스 파일 2. 함수의 매개변수로 인터페이스를 전달하고 그 인수로 코드(익명 클래스)를 전달 프로그램 실행결과 소스 파일 3. class안에 인터페이스와 내부인터페이스의 구현과 사용 프로그램 실행결과 소스 분석 Banana는 인터페이스이므로 객체화를 하기 위해서는 추상 메소드를 정의해줘야 한다. 위는 익명 객체를 만드는 것인데, 위 내용과 마찬가지로 추상 메소드를 정의해야 한다. 위는 익명 객체를 만드는 것인데, 위 내용과 마찬가지로 추상 메소드를 정..