자바 5

스칼라 퓨처(Future)와 동시성(Concurrency) - 2

이전 포스트에 이어서 스칼라 Future의 다른 사용법에 대해 살펴보도록 하겠습니다. Future 실패 처리하기 스칼라 Future는 실패한 퓨처를 다룰 수 있는 failed, fallBackTo, recover, recoverWith 메소드를 제공합니다. failed Future[T]에서 실패한 Future를 예외를 저장한 Future[Throwable] 타입의 성공한 Future로 바꿔줍니다. scala> val failure = Future { 42 / 0 } failure: scala.concurrent.Future[Int] = ... scala> failure.value res23: Option[scala.util.Try[Int]] = Some(Failure(java.lang.Arithmetic..

Programming/Scala 2019.08.17

스칼라 퓨처(Future)와 동시성(Concurrency) - 1

오늘 멀티 코어 프로세서가 대중화되면서 동시성에 대한 관심도 많이 늘어났습니다. 이러한 동시성 프로그래밍을 위해서 기존의 프로그래밍 언어들을 블로킹을 사용하여 동기화함으로써 동시성을 지원합니다. 자바의 경우도 마찬가지로 공유 메모리와 락을 기반으로 동시성을 지원하고 있습니다. 그러나 이러한 블로킹을 사용한 동기화의 경우 Deadlock이나 Starvation과 같은 문제가 발생할 수 있습니다. 이렇게 블로킹 기반의 동시성 처리는 이러한 어려움이 있습니다. 그래서 비동기적 프로그래밍을 사용하면 이러한 블로킹을 없앨 수 있습니다. 비동기적(asynchronous) 프로그래밍이란 아래의 그림과 같이 메인 프로그램의 흐름이 있고 이와 독립적으로 실행되는 프로그래밍 스타일을 의미합니다. 스칼라에서는 이러한 비동기..

Programming/Scala 2019.08.16

다형성 (Polymorphism)

다형성이란? 다형성은 상속과 함께 객체지향 언어의 중요한 특징중 하나이다. 다형성은 상속과 관계가 있기 때문에 앞선 포스팅에 있는 상속을 미리 읽어 보는 것을 추천한다.객체지향에서 다형성의 의미는 '다양한 형태의 객체를 참조할 수 있는 것'을 의미한다. 자바에서는 한 타입의 참조 변수를 이용하여 여러 가지 타입의 객체를 참조할 수 있도록 기능을 제공하여 다형성을 제공하고 있다. 결론부터 말하면, 부모 클래스 타입의 참조 변수를 이용하여 자식 클래스의 인스턴스를 참조할 수 있다는 것이다. class Tv { boolean power; int channel; void power(); void channelUp(); void channelDown(); } class CaptionTv extend Tv { St..

Programming/Java 2015.07.12

제어자(Modifier)

1. Introduction 제어자는 클래스, 변수 혹은 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 2. static static은 멤버변수, 메서드, 초기화 블럭에 사용될 수 있다. static이 의미하는 것은 아래와 같다. Member variables 모든 인스턴스에서 공통적으로 사용되는 클래스 변수가 된다.(전역 변수처럼) 클래스 변수는 인스턴스를 생성하지 않고 사용가능하다. 클래스가 메모리에 로드될 때 생성된다. Method 인스턴스를 생성하지 않아도 호출이 가능한 static 메서드를 생성할 때 사용 static 메서드 내에서는 일반적인 멤버 변수를 사용할 수 없다. 3. final final은 변경될 수 없는 의미를 가지고 있다. 변수에 사용되면 변경할 수 없는 상수(c나 c..

Programming/Java 2015.06.28

오버라이딩 (Overriding)

1. 오버라이딩이란? 부모 클래스로부터 상속 받은 메서드의 내용을 변경하는 것 class Point { int x; int y; String getLocation() { return "x :" + x + ", y :" + y; } } class Point3D extends Point { int z; Point3D(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } String getLocation() {// 오버라이딩 return "x :" + x + ", y :"+ y + ", z :" + z; } } 위의 코드와 같이 상속 받은 클래스의 메서드를 그대로 사용하지 않고 자신에 맞게 변경하는 것을 오버라이딩이라고 한다. 2. 오버라이딩의 조건 메서..

Programming/Java 2015.06.24
반응형