-
[Java 기초] 멀티스레드 - 2카테고리 없음 2019. 5. 15. 20:50
1. 데몬 스레드 데몬 스레드는 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드입니다. 즉, 백그라운드상태로 대기하고 있다가 특정 조건이 만족되면 작업을 수행하고 다시 대기상태로 돌아가는 스레드를 말합니다. 만일, 주 스레드가 종료된다면 백그라운드로 돌고있던 데몬스레드도 자연스럽게 같이 종료되게 됩니다. 데몬 스레드 생성을 위해서는 아래와 같이 setDaemon(true)을 선언해주면 됩니다. public class AutoSaveThread extends Thread { public void save() { System.out.println("save"); } @Override public void run() { while(true) { try { Thread.sleep(1000); //1초를..
-
[Java 기초] 멀티 스레드 - 1개발언어/Java 2019. 5. 13. 20:44
1. 멀티스레드란? 스레드(thread)는 본래 '실 가닥'을 뜻하는 용어이다. Java에서는 이것을 '한 가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼 이어놓은 것'을 말한다. 즉, 스레드를 사용하면 여러개의 작업에 스레드를 줘서 스레드를 가진 작업들은 동시에 일을 처리할 수 있게 해주는 기법을 의미한다. 2. 작업스레드의 생성/실행 작업스레드는 Thread 클래스로부터 직접 생성하는 방법과 Thread 하위 클래스로부터 생성하는 두 가지 방법이 존재한다. 1) 직접생성 Thread는 java.lang.Thread 클래스를 통해 생성할 수 있는데, 작업 스레드 객체를 만들기 위해서는 아래 코드처럼 Runnable을 매개변수로 받는 생성자를 호출해야한다. Thread t1 = new Thre..
-
[번역] Java 8의 동시성(Concurrency)개발언어/Java 2019. 5. 1. 23:35
부제 : Java8의 lambda에서 가장 중요한 원자적 변수와 동시성Map 이 튜토리얼은 동시성 API의 핵심 개념인 Atomic Variables and Concurrent Maps 에 대해서 이야기하고자 합니다. 두 개념 모두 Java 8에서 람다를 설명하는데 있어서 정말 중요한 개념입니다. 1. AtomicInteger 패키지 java.concurrent.atomic은 원자적 연산을 수행하기 위해 여러 유용한 연산들을 포함하고 있습니다. 연산이 원자적이라는 것은 `synchronized` 키워드나 lock을 사용하지 않고도 멀티스레드로 병렬 연산을 안전하게 실행할 수 있을 때를 말합니다. 내부적으로, 원자적인 클래스들은 comapre of swap(CAS)라는 원자적 명령어를 빈번하게 사용합니다...
-
웹 캐시개발기초/Web 2019. 4. 23. 20:16
컴퓨터 공학을 전공했거나 개발을 조금 해보신 분이라면 캐시라는 단어는 굉장히 익숙하실겁니다. 그리고 우리는 캐시가 애플리케이션의 처리 속도를 높여준다는 것을 알고 있습니다. 사용률이 높은 데이터를 캐시에 저장해두었다가 필요시에 빠르게 꺼내쓸 수 있도록 해서 처리속도를 높이죠. 과연 캐시는 구체적으로 어떻게 처리속도를 높일까요? 1. 웹캐시, 어디에 쓰나? 구체적으로 웹캐시에 대해 알아보기 전에 웹 캐시를 왜 쓰는지부터 살펴보고자 합니다. 그리고 결론부터 말씀드리자면 일반적으로 사용자가 만드는 데이터 보다는 서비스에서 제공하는 컨텐츠(뉴스,허브,실시간 검색어 등)와 같이 서버에서 반복적으로 제공되는 데이터를 사용자에게 보여주고자 할 때 사용합니다. 그리고 실제로 사용할 땐, 아래의 조건을 만족한다면 캐시 ..
-
GraphQL이란 무엇인가?SW개발/GraphQL 2019. 2. 10. 21:25
1. GraphQL? - GraphQL의 정의와 특징 1) GraphQL이 뭐에요? 구글창에 GraphQL이라고 치면 아래와 같은 정의가 나온다. 출처: 위키백과 위에 설명된 내용에서 알 수 있듯이 GraphQL은 1. Query Language 이다.2. REST 구조를 대체할 수 있다.3. 클라이언트는 필요한 데이터의 구조를 지정하여 필요한 데이터만 받아낼 수 있다. 이렇게 요약할 수 있다. 그리고 이것들을 하나로 요약하면, GraphQL의 핵심은 클라이언트가 필요한 리소스(이 용어가 어렵다면 data라고 생각하면 됩니다.)를 url 경로가 아니라 Query를 통해 표현한다는 것! 이걸 좀 더 간단하게 말하면, 클라이언트에게 필요한 데이터만 쿼리를 통해 가져올 수 있다는 것! GraphQL은 SQL처..