본문 바로가기

Java

installing jdk8 on ubuntu manually .. How to Manually Install Java 8 on Ubuntu 18.04 LTS April 29, 2018 by Ryan McCormick Leave a Comment I recently upgraded to the latest LTS version on my dev machine and needed to install Java. I couldn’t remember exactly what I did last time but knew that I needed to download the tarball from Oracle, save the extracted files somewhere, add the runtime (java), SDK compiler (javac) and webstart (ja.. 더보기
[Java 8 Labmda] 스트림 자바 8 에서는 streams 라는 기능이 추가되어서 collection-processing 코드를 더욱 높은 추상화가 가능하도록 할 수 있다. Stream 인터페이스는 다양한 function을 포함하고 있는데, 아래에 그 기능을 자세히 살펴보자. 1. 외부의 Iteration에서 내부적 Iteration으로 자바 개발할 때, 가장 많이 사용하는 것이 아마 Collectin을 이용한 루프일 것이다. 예를 들면 아래와 같다. int count = 0; for (Artist artist : allArtists) { if (artist.isFrom("London")) { count++; } } 이러한 코드는 이러한 컬랙션의 값을 꺼내려 할 때에 이와 같은 패턴을 반복적으로 사용해야 한다는 단점이 있다. 또한 .. 더보기
[Java] ThreadLocal 사용법 자바 1.2 버전부터 제공되고 있지만 아직 다수의 개발자들이 잘 몰라서 활용을 잘 못하는 기능이 하나 있는데, 그 기능이 바로 쓰레드 단위로 로컬 변수를 할당하는 기능이다. 이 기능은 ThreadLocal 클래스를 통해서 제공되는데, 본 글에서는 ThreadLocal 클래스의 기본적인 사용방법과 활용 방법을 살펴보도록 하겠다. ThreadLocal이란? 일반 변수의 수명은 특정 코드 블록(예, 메서드 범위, for 블록 범위 등) 범위 내에서만 유효하다. { int a = 10; ... // 블록 내에서 a 변수 사용 가능 } // 변수 a는 위 코드 블록이 끝나면 더 이상 유효하지 않다. (즉, 수명을 다한다.) 반면에 ThreadLocal을 이용하면 쓰레드 영역에 변수를 설정할 수 있기 때문에, 특정.. 더보기
[자바] (멀티쓰레딩 4) 쓰레드에서 값 반환 쓰레드에서 값 반환 하기쓰레드로부터 값을 리턴 받는 방법을 살펴보자.일반 쓰레드의 경우를 살펴본 후 Executor의 경우도 살펴보자.1. 일반 쓰레드의 경우일반 쓰레드에서 리턴 값을 얻는 방법은 아래 두 가지가 있다.블록킹: synchronized를 이용해 변경 시점까지 락을 거는 방법논블록킹: Observer Pattern을 이용하는 방법1.1 블록킹synchronized를 이용해 변경 시점까지 락을 거는 방법으로 데이터를 읽는 메소드를 락을 걸고 쓰레드가 실행되는 마지막에 락을 푼다. 그 예는 다음과 같다. this.wait()로 기다리고 this.notifyAll()로 해제한다. done 변수를 이용해 synchronized로 무조건 들어가지 않도록 했으며, done은 volatile로 선언해서 .. 더보기
[자바] (멀티쓰레딩 3) 쓰레드 이름 설정 Java 쓰레드 이름 설정디버깅의 편리를 위해 Java 쓰레드에 이름을 부여하는 것이 좋다. 그 방법을 알아보자.1. 실행 시 쓰레드 이름 부여하기run() 메소드안에서 Thread.currentThread().setName()을 이용해서 쓰레드 이름을 부여한다. 이 방식은 일반 thread는 물론이고 Executor에도 동일하게 적용되는 방식이다.import java.util.concurrent.TimeUnit; public class NamingThreadsFirstWay { public static void main(String argc[]) { System.out.println("Main thread starts here..."); Thread t = new Thread(new MyThreadTa.. 더보기
[자바] Java - (멀티쓰레딩 2) Executor 기본 1. 개요Java의 일반 쓰레드 구동 방식은 다양하지만, Executor는 단지 하나의 방식으로 간단하게 쓰레드를 구동할 수 있다. 아래의 두 가지를 하면 된다.태스크를 정의한 클래스의 생성Executor Service에 태스크 객체를 제공Executor 프레임웍은 다음과 같은 특징을 지닌다.쓰레드 풀을 사용무거운 쓰레드는 미리 할당 가능태스크와 쓰레드를 생성하고 관리하는 것을 분리쓰레드 풀안의 쓰레드는 한번해 하나씩 여러 태스크를 실행태스크 큐를 이용해 태스크를 관리Executor Service를 더이상 필요 없으면 중지Executor Service가 멈추면 모든 쓰레드도 중지2. 주요 클래스와 인터페이스Executor 인터페이스: 태스크와 쓰레드를 분리하고 실행을 담당void execute(Runna.. 더보기