본문 바로가기
반응형

Delvelopment/Java9

[java] Compare-And-Swap(CAS) 알고리즘 이란? 멀티스레딩 환경에서 Synchronize를 위한 처리 방법중 한 가지이다. 운영체제의 프로세스와 프로세서를 병렬화 하기 위해 사용되었다고 한다. 컴퓨터 과학에서 CAS는 동기화를 달성하기 위해 멀티스레딩에 사용되는 원자적 명령이다. ”비교한 후 바꿔주는 것” 변수는 스레드 내의 스택(캐시)에 저장되고 메모리에 저장된 값과 비교하고 동일한 경우에만 해당 메모리의 위치의 내용을 새로운 주어진 값으로 수정한다. Atomic은 최신 정보를 기반으로 새 값이 계산되도록 보장한다. 다른 스레드에 의해 값이 업데이트된 경우 쓰기가 실패한다. 메인 메모리의 값을 가져오기 위해 volatile 키워드 변수를 가져오게 되는데 읽기 연산에서만 사용한다는 단점이 있다. Atomic class와 ConcurrentHashMap.. 2022. 2. 20.
[Java] Object 클래스 구성 Object 클래스는 자바 클래스의 최상위 클래스이며, 11개의 메소드로 구성되어 있다. getClass() 클래스 타입을 리턴한다. hashCode() 해당 객체의 해시 코드값을 리턴한다. equals(Object obj) 인스턴스를 메서드의 매개변수와 비교하여 결과를 리턴한다. public boolean equals(Object obj) { return (this == obj); } clone() 인스턴스를 복제하여, 새로운 인스턴스를 생성해 리턴한다. 단, Object 클래스의 clone() 메소드는 필드의 값만 복사 하기 때문에, 배열이나 인스턴스라면 제대로 복사되지 않는다. → clone() 메소드를 오버라이딩하여, 복제가 제대로 이루어지도록 재정의가 필요하다. toString() 인스턴스의 정.. 2022. 1. 23.
[Java] Method Dispatch (Static Dispatch, Dynamic Dispatch, Double Dispatch) Method Dispatch란, 어떤 메소드를 실행할지를 결정하여 실제로 실행시키는 과정이다. Java는 런타임시 객체를 생성하고, 컴파일 시에는 생성할 객체 타입에 대한 정보만 보유한다. static(정적)과 dynamic(동적)인 상황이 이루어진다. Method Dispatch는, 세 가지 Dispatch인 Static Dspatch, Dynamic Dispatch, Double Dispatch로 구성한다. 정적 디스패치 (Static Dspatch) 컴파일 시점에서, 컴파일러가 특정 메소드의 호출할 것이라는 것을 명확히 아는 경우이다. 컴파일 시 생성된 바이트 코드에 이 정보가 남아있는데, 오버로딩(OverLoading)을 하는 경우 인자의 타입이나 리턴타입 등에 따라 미리 알기 때문이다. publ.. 2022. 1. 23.
[Java] System.identityHashCode()와 hashCode() 차이 System.identityHashCode()와 hashCode() 두 메서드 모두 객체의 고유한 값을 리턴한다. System.identityHashCode() 객체의 고유한 hashcode를 리턴하는 메소드이다. hashCode() 모든 객체의 부모 클래스인 Object 클래스에 정의되어있다. void new연산자() { Member member = new Member("hello", "1"); Member member2 = new Member("world", "2"); Member member3 = new Member("hello", "1"); System.out.println(System.identityHashCode(member)); //646204091 System.out.println(Syst.. 2022. 1. 21.
JUnit이란? JUnit5 (Assertion, 어노테이션) JUnit은 JAVA 프로그래밍 언어용 유닛 테스트 프레임워크이다. JUnit은 테스트 주도 개발을 위한 유닛 테스트 프레임워크이다. 테스트 결과를 텍스트로 남기는 것이 아니라 Test Class로 남기므로, 개발자에게 테스트 방법 및 클래스의 히스토리를 남길 수 있다. JUnit4는 단일 Jar로 구성되었으나, JUnit5는 JUnit Platform, JUnit Jupiter, JUnit Vintage 모듈들로 구성되었다. 현재 JUnit 5.8.2 버전을 보면 크게 세가지 아래에 여러 모듈이 포함된걸 볼 수 있다. 모듈별 디스크립션은 https://junit.org/junit5/docs/current/api/index.html 참고하길 바란다. (JUnit5 버전은 java8 부터 사용이 가능하다... 2022. 1. 14.
[JAVA] 산술, 비트, 관계, 논리, 3항, 화살표 연산자, java14 switch 문 산술 연산자 산술 연산자는 우리가 일반적으로 말하는 사칙연산이다. 산술 연산자는 더하기 (+), 빼기 (-), 곱하기 (*), 나누기 (/), 나머지를 구하는 (%) 총 5개로 이루어져 있다. 산술 연산자는 boolean 타입을 제외한 모든 기본 타입에 사용할 수 있다. 기본적인 연산은 모두 알고 있을거다.. 산술 연산자의 특징은 피연산자들의 타입이 동일하지 않을때 아래와 같은 규칙으로 타입을 일치 시킨 후 연산을 수행한다. 피연산자들이 모두 정수 타입일때, int 타입(4byte) 보다 크기가 작을 경우 모두 int 타입으로 변환 후 연산을 수행한다. 피연산자들이 모두 정수 타입일때, log 타입이 있을 경우 모두 long 타입으로 변환후 연산을 수행한다. 피연산자 중 실수 타입이 있을때, 크기가 큰 .. 2022. 1. 6.
반응형