Java의 다중 스레드 사용을 시작하는 방법
무엇이 선입니까
라인은 경량급 프로세스이다.모든 프로세스는 여러 개의 루틴을 실행할 수 있다.
예를 들어 웹 브라우저에서 우리는 사용자 인터페이스를 불러올 수 있고 사용자 인터페이스에 표시해야 할 모든 데이터를 실제 검색할 수 있는 라인 이상을 가지고 있다.
멀티스레드
다중 스레드는 우리로 하여금 여러 개의 스레드를 동시에 운행할 수 있게 한다.
예를 들어 웹 브라우저에서 우리는 사용자 인터페이스를 처리할 수 있는 라인이 있을 뿐만 아니라, 표시할 데이터를 얻을 수 있는 다중 라인도 있다.
따라서 다중 스레드는 시스템의 응답 능력을 향상시켰다.
병발성
스레드 상하문에서의 병발성은 우리로 하여금 여러 개의 스레드를 동시에 운행할 수 있게 한다.
그런데 라인이 정말 동시에 실행됩니까?
싱글 코어 시스템
JVM에서 제공하는 스레드 스케줄러는 주어진 시간에 실행할 스레드를 결정합니다.스케줄러는 모든 라인에 작은 타임라인을 제공한다.
그래서 주어진 시간 동안 우리는 프로세서에서 실제로 실행되는 라인만 있다.그러나 시간 절단으로 인해 우리는 여러 개의 노선이 동시에 운행하는 것을 느꼈다.
멀티 코어 시스템
다중 핵심 시스템에서도 루틴 스케줄러가 관련된다.그러나 우리는 여러 개의 코어가 있기 때문에 실제로는 여러 개의 라인을 동시에 운행할 수 있다.
예를 들어, 만약 우리가 이중 핵 시스템을 가지고 있다면, 우리는 두 개의 라인을 동시에 운행할 수 있다.첫 번째 스레드는 첫 번째 코어에서 실행되고, 두 번째 스레드는 두 번째 코어에서 실행됩니다.
왜 다중 스레드가 필요합니까?
다중 스레드는 우리로 하여금 시스템의 응답 능력을 향상시킬 수 있게 한다.
예를 들어 웹 브라우저에서 모든 내용이 한 라인에서 실행된다면 언제든지 데이터를 추출하여 표시하면 시스템이 전혀 응답하지 않을 것이다.만약 데이터를 추출하는 데 10초가 걸린다면, 이 10초 안에, 우리는 웹 브라우저에서 새로운 옵션을 열거나, 웹 브라우저를 닫는 등 다른 작업을 수행할 수 없습니다.
따라서 서로 다른 라인에서 동시에 프로그램을 실행하는 서로 다른 부분은 시스템의 응답 능력을 향상시키는 데 도움이 된다.
어떻게 Java로 멀티스레드 프로그램을 작성합니까
우리는 다음과 같은 방법으로 자바에서 라인을 만들 수 있다
다중 스레드는 우리로 하여금 여러 개의 스레드를 동시에 운행할 수 있게 한다.
예를 들어 웹 브라우저에서 우리는 사용자 인터페이스를 처리할 수 있는 라인이 있을 뿐만 아니라, 표시할 데이터를 얻을 수 있는 다중 라인도 있다.
따라서 다중 스레드는 시스템의 응답 능력을 향상시켰다.
병발성
스레드 상하문에서의 병발성은 우리로 하여금 여러 개의 스레드를 동시에 운행할 수 있게 한다.
그런데 라인이 정말 동시에 실행됩니까?
싱글 코어 시스템
JVM에서 제공하는 스레드 스케줄러는 주어진 시간에 실행할 스레드를 결정합니다.스케줄러는 모든 라인에 작은 타임라인을 제공한다.
그래서 주어진 시간 동안 우리는 프로세서에서 실제로 실행되는 라인만 있다.그러나 시간 절단으로 인해 우리는 여러 개의 노선이 동시에 운행하는 것을 느꼈다.
멀티 코어 시스템
다중 핵심 시스템에서도 루틴 스케줄러가 관련된다.그러나 우리는 여러 개의 코어가 있기 때문에 실제로는 여러 개의 라인을 동시에 운행할 수 있다.
예를 들어, 만약 우리가 이중 핵 시스템을 가지고 있다면, 우리는 두 개의 라인을 동시에 운행할 수 있다.첫 번째 스레드는 첫 번째 코어에서 실행되고, 두 번째 스레드는 두 번째 코어에서 실행됩니다.
왜 다중 스레드가 필요합니까?
다중 스레드는 우리로 하여금 시스템의 응답 능력을 향상시킬 수 있게 한다.
예를 들어 웹 브라우저에서 모든 내용이 한 라인에서 실행된다면 언제든지 데이터를 추출하여 표시하면 시스템이 전혀 응답하지 않을 것이다.만약 데이터를 추출하는 데 10초가 걸린다면, 이 10초 안에, 우리는 웹 브라우저에서 새로운 옵션을 열거나, 웹 브라우저를 닫는 등 다른 작업을 수행할 수 없습니다.
따라서 서로 다른 라인에서 동시에 프로그램을 실행하는 서로 다른 부분은 시스템의 응답 능력을 향상시키는 데 도움이 된다.
어떻게 Java로 멀티스레드 프로그램을 작성합니까
우리는 다음과 같은 방법으로 자바에서 라인을 만들 수 있다
다중 스레드는 우리로 하여금 시스템의 응답 능력을 향상시킬 수 있게 한다.
예를 들어 웹 브라우저에서 모든 내용이 한 라인에서 실행된다면 언제든지 데이터를 추출하여 표시하면 시스템이 전혀 응답하지 않을 것이다.만약 데이터를 추출하는 데 10초가 걸린다면, 이 10초 안에, 우리는 웹 브라우저에서 새로운 옵션을 열거나, 웹 브라우저를 닫는 등 다른 작업을 수행할 수 없습니다.
따라서 서로 다른 라인에서 동시에 프로그램을 실행하는 서로 다른 부분은 시스템의 응답 능력을 향상시키는 데 도움이 된다.
어떻게 Java로 멀티스레드 프로그램을 작성합니까
우리는 다음과 같은 방법으로 자바에서 라인을 만들 수 있다
확장 Thread 클래스
라인에서 실행할 수 있는 코드를 만들기 위해 클래스를 만들고 Thread 클래스를 확장했습니다.이 코드가 실행 중인 작업은run () 함수에 두어야 합니다.다음 코드에서 Worker는 Thread 클래스를 확장하는 클래스입니다. 숫자 0에서 5를 출력하는 작업은run () 함수에서 이루어집니다.
class Worker extends Thread {
@Override
public void run() {
for (int i = 0; i <= 5; i++) {
System.out.println(Thread.currentThread().getName() + ": " + i);
}
}
}
위의 코드 라인에서currentThread().getName () 은 실행 코드의 현재 스레드 이름을 가져오는 데 사용됩니다.루틴을 만들기 위해서는, Worker 클래스의 실례 하나만 만들 수 있습니다.그리고 start () 함수로 라인을 시작할 수 있습니다.
public class ThreadClassDemo {
public static void main(String[] args) {
Thread t1 = new Worker();
Thread t2 = new Worker();
Thread t3 = new Worker();
t1.start();
t2.start();
t3.start();
}
}
위의 코드에서, 우리는 Worker 클래스에서 3개의 루트 t1, t2, t3을 만들었다.그리고 start () 함수를 사용하여 라인을 시작합니다.
다음은 확장thread 클래스를 통해 라인을 만드는 최종 코드입니다.
class Worker extends Thread {
@Override
public void run() {
for (int i = 0; i <= 5; i++) {
System.out.println(Thread.currentThread().getName() + ": " + i);
}
}
}
public class ThreadClassDemo {
public static void main(String[] args) {
Thread t1 = new Worker();
Thread t2 = new Worker();
Thread t3 = new Worker();
t1.start();
t2.start();
t3.start();
}
}
다음은 우리가 상술한 코드를 실행함으로써 얻은 출력이다모든 3개의 스레드가 0에서 5까지의 숫자를 인쇄한 것을 알 수 있다.
출력에서 알 수 있듯이 이 세 개의 라인은 어떠한 특정한 순서대로 운행되지 않았다
실행 가능한 인터페이스 구현
라인에서 실행할 수 있는 코드를 만들기 위해서 우리는 클래스를 만들고 실행 가능한 인터페이스를 실현했다.이 코드가 실행 중인 작업은run () 함수에 두어야 합니다.아래 코드에서 RunnableWorker는 Runnable 인터페이스를 실현하는 클래스입니다. 숫자 0에서 4를 출력하는 작업은run() 함수에서 이루어집니다.
class RunnableWorker implements Runnable{
@Override
public void run() {
for (int i = 0; i <= 4; i++) {
System.out.println(Thread.currentThread().getName() + ": " + i);
}
}
}
라인을 만들기 위해서는 우선 RunnableWorker의 실례를 만들어야 합니다. 이 실례는 Runnable 인터페이스를 실현합니다.그리고thread 클래스의 실례를 만들고 RunnableWorker의 실례를 매개 변수로 전달함으로써 새로운 라인을 만들 수 있습니다.코드는 아래와 같다
public class RunnableInterfaceDemo {
public static void main(String[] args) {
Runnable r = new RunnableWorker();
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
Thread t3 = new Thread(r);
t1.start();
t2.start();
t3.start();
}
}
위의 코드는 실행 가능한 실례 r를 만들었습니다. 그리고 3개의 라인 t1, t2, t3을 만들었습니다. 그리고 r를 매개 변수로 3개의 라인에 전달합니다.그리고 start () 함수를 사용하여 세 개의 라인을 시작합니다.다음은 Runnable 인터페이스를 통해 라인을 만드는 전체 코드입니다.
class RunnableWorker implements Runnable{
@Override
public void run() {
for (int i = 0; i <= 4; i++) {
System.out.println(Thread.currentThread().getName() + ": " + i);
}
}
}
public class RunnableInterfaceDemo {
public static void main(String[] args) {
Runnable r = new RunnableWorker();
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
Thread t3 = new Thread(r);
t1.start();
t2.start();
t3.start();
}
}
상술한 코드를 실행하면 우리는 다음과 같은 출력을 얻을 것이다.코드를 실행할 때마다 출력의 순서가 바뀝니다.실행 가능한 인터페이스를 실현하는 것이 Thread 클래스를 확장하는 것보다 낫다. 왜냐하면 우리는 하나의 클래스만 확장할 수 있지만, 우리는 자바에서 여러 개의 인터페이스를 실현할 수 있기 때문이다.
Java 8의 실행 가능한 인터페이스
자바 8에서 실행 가능한 인터페이스는 함수 run () 이 하나이기 때문에 FunctionInterface가 됩니다.
다음 코드는 자바 8에서 실행 가능한 실례를 만드는 방법을 보여 줍니다.
public class RunnableFunctionalInterfaceDemo {
public static void main(String[] args) {
Runnable r = () -> {
for (int i = 0; i <= 4; i++) {
System.out.println(Thread.currentThread().getName() + ": " + i);
}
};
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
Thread t3 = new Thread(r);
t1.start();
t2.start();
t3.start();
}
}
여기서 우리는 클래스를 만들고 실행 가능한 인터페이스를 실현하는 것이 아니라 lambda 표현식을 사용하여 실행 가능한 실례를 만들 수 있습니다. 아래와 같습니다.Runnable r = () -> {
for (int i = 0; i <= 4; i++) {
System.out.println(Thread.currentThread().getName() + ": " + i);
}
};
비밀번호
본고의 코드는 아래githubrepo에서 찾을 수 있습니다
https://github.com/aditya-sridhar/basic-threads-demo
축하한다😃
이제 Thread 클래스를 확장하고 Runnable 인터페이스를 실현하여 라인을 만드는 방법을 알게 되었습니다.
다음 블로그 글에서 나는 라인의 생명 주기와 도전을 토론할 것이다.
언제든지 저에게 연락하거나 따라주세요.
만약 네가 이 게시물을 좋아한다면, 너는 나의 사이트를 볼 수 있다https://adityasridhar.com기타 유사 직위
Reference
이 문제에 관하여(Java의 다중 스레드 사용을 시작하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/adityasridhar/how-to-get-started-with-multithreading-in-java-1b74
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이제 Thread 클래스를 확장하고 Runnable 인터페이스를 실현하여 라인을 만드는 방법을 알게 되었습니다.
다음 블로그 글에서 나는 라인의 생명 주기와 도전을 토론할 것이다.
언제든지 저에게 연락하거나 따라주세요.
만약 네가 이 게시물을 좋아한다면, 너는 나의 사이트를 볼 수 있다https://adityasridhar.com기타 유사 직위
Reference
이 문제에 관하여(Java의 다중 스레드 사용을 시작하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/adityasridhar/how-to-get-started-with-multithreading-in-java-1b74텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)