Programming (467) 썸네일형 리스트형 멀티 스레드(2) - 작업 스레드 개념 : Thread 클래스로부터 생성 1 앞선 아티클에서 우리는 Thread 클래스로부터 작업 스레드를 선언하는 방식을 살펴보았습니다. 일단 기본적으로 Thread 클래스를 사용해서 작업 스레드 인스턴스를 생성해야 하는데, 이 때 호출하는 생성자는 인터페이스 Runnable을 파라미터로 갖습니다. Runnable이란 네이밍에서 우리는 이것이 '작업 스레드가 실행할 수 있는 코드'를 갖고 있다는 점을 유추하면 되겠습니다. Thread thread = new Thread(Runnable target); 여기서 인터페이스 Runnable은 메서드 run( )이 선언되어 있습니다. 즉, Runnable 구현 클래스는 run( )을 오버라이드해서 작업 스레드가 실행할 실제 코드를 선언해줘야 합니다. 여기서 Runnable 구현 클래스는 작업 내용만 .. 멀티 스레드(1) - 멀티 스레드 개념 : 프로세스와 스레드 2 기본적으로 JAVA의 어플리케이션은 메인 스레드(main thread)가 main() 메서드를 실행하면서 시작됩니다. 당연하지만 main() 메서드의 코드를 순차적으로 실행해서 마지막 코드 또는 return문을 만나면 실행을 종료하게 되죠. 그런데 여기서 메인 스레드가 필요에 의해서 병렬로 작업 스레드를 통해 코드를 실행할 수 있습니다. 이것이 멀티 스레드를 생성해 진행하는 멀티 태스킹입니다. 위의 그림과 같이 메인 스레드가 메인 스레드가 작업 스레드 1을 생성하고 실행한 다음, 작업 스레드 2를 또하나 생성해 실행하는 방식이 되겠네요. 싱글 스레드 어플리케이션에서는 스레드는 메인 스레드 하나밖에 없습니다. 그래서 메인 스레드가 종료되면 어플리케이션 자체가 종료됩니다. 하지만 멀티 스레드는 다르죠... 멀티 스레드(1) - 멀티 스레드 개념 : 프로세스와 스레드 1 ○ 프로세스, 스레드 OS에서 실행되는 하나의 어플리케이션을 기본적으로 프로세스(process)로 칭합니다. OS로부터 메모리를 할당 받고, 코드를 실행하는 단위죠. 하나의 프로세스가 중복으로 실행되어 다중 프로세스를 이루기도 합니다. 간단하게, 크롬을 두 번 실행시키면 크롬이 두 개가 뜨죠? chrome.exe가 두 개가 양립하는 상황입니다. ○ 멀티 태스킹 - 멀티 프로세스, 멀티 스레드 흔히 얘기하는 멀티 태스킹(multi tasking)은 두 가지 이상의 작업을 동시에 처리한다는 아주 친숙한 개념입니다. 위에서 말한 다중(멀티) 프로세스가 이에 해당하겠죠? 하지만 멀티 태스킹은 멀티 프로세스에 한정되지 않는 개념입니다. 즉, 하나의 프로세스인 한 개의 어플리케이션 내에서 다중 작업이 가능하기 .. 7. 익스프레스 (4) - 템플릿 엔진 : Nunjucks 7 앞선 넌적스와 관련된 내용을 바탕으로, 종합해서 예제를 작성해 보겠습니다. [layout.html] {% block content %} {% endblock %} [index.html]{% extends 'layout.html' %}{% block content %}{{title}}Welcome to {{title}}{% endblock %} [error.html]{% block content %}{{message}}{{error.status}}{{error.stack}}{% endblock %} layout.html의 {% block content %} 부분은 index.html {% block content %}가 들어갑니다. 그리고 index... 7. 익스프레스 (4) - 템플릿 엔진 : Nunjucks 6 ○ extends와 block include와도 함께 사용하며, 레이아웃을 지정하고 공통되는 레이아웃을 따로 관리할 수 있습니다. 일단 아래의 예제처럼, 레이아웃이 되는 파일에 공통되는 마크업을 넣고, 페이지마다 달라지는 부분을 block으로 선언해 둡니다. {% block [블록명] %}으로 block을 선언하고, {% endblock %}으로 블록을 종료합니다. [HTML] 헤더입니다 {% block content %} {% endblock %} 푸터입니다 {% block script %} {% endblock %} {% extends 'layout.html' %}{% block .. 7. 익스프레스 (4) - 템플릿 엔진 : Nunjucks 5 ○ include 넌적스에서도 역시 다른 HTML 파일을 삽입할 수 있습니다. 흔히 말하는 헤더나 푸터, 내비게이션과 같이 공통으로 사용되는 부분을 따로 관리할 수 있습니다. 역시 {% include "파일경로" %} 형식으로 사용하게 됩니다. [HTML] HOME About 메인 파일 다른 파일을 include 할 수 있습니다. 푸터입니다. [Nunjucks] HOME About 푸터입니다.{% include "header.html" %} 메인 파일 다른 파일을 include 할 수 있습니다.{% include "footer.html" %} 7. 익스프레스 (4) - 템플릿 엔진 : Nunjucks 4 ○ 조건문 넌적스에서의 조건문은 {% if 변수 %} {% elif %} {% else %} {% endif %}로 이루어졌습니다. [HTML]로그인 되었습니다.로그인이 필요합니다. [Nunjucks]{% if isLogginIn %}로그인 되었습니다.{% else %}로그인이 필요합니다.{% endif %} 조건문에서는 당연한 수순처럼 분기 처리를 학습하게 되는데, 여기서는 일반적인 case문은 없고 elif문, 즉 else if 역할을 하는 명령문을 통해 분기처리를 진행하게 됩니다. [HTML]사과입니다.바나나입니다.오렌지입니다.사과도 바나나도 오렌지도 아닙니다 [Nunjucks]{% if fruit === 'apple' %}사과입니다.{% elif fruit === 'banana' .. 7. 익스프레스 (4) - 템플릿 엔진 : Nunjucks 3 ○ 반복문 기본적으로 넌적스에서는 특수 문을 {% %} 안에 넣어서 사용합니다. 반복문의 경우도 for in문과 endfor 문 사이에 해당 내용을 작성해 사용하면 됩니다. [HTML] 사과 배 오렌지 바나나 복숭아 [Nunjucks] {% set fruits = ['사과', '배', '오렌지', '바나나', '복숭아'] %} {% for item in fruits %} {{item}} {% endfor %} 만약 위의 반복문 사례에서 인덱스를 사용하고 싶다면, loop.index라는 변수를 사용해주면 됩니다. 예제를 보겠습니다. [HTML] 1번째 사과 2번째 배 3번째 오렌지 4번째 바나나 5번째 복숭아 [Nunjucks.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 59 다음