[JAVA] 이미 클래스를 상속받은 클래스에 멀티쓰레딩을 구현해야 하는 경우 [JAVA] 싱글쓰레드와 멀티쓰레드 예제 [JAVA] 싱글쓰레드로 동작하는 프로그램 [JAVA] 멀티쓰레딩(Multi Threading) [JAVA]쓰레드 개념 익히기 daemon 백그라운드에서 실행되고 있는 프로그램 프로그램(Program cutyqueen.tistory.com 멀티쓰레딩 구현 코드의 변형 -실제 프로그래밍 과정에서 더 많이 사용하는 방식 -Thread 또는 Runnable 구현체를 별도로 정의하지 않고 Thread 클래스의 생성자에 Runnable 인터페이스 객체 생성 코드를 바로 작성 => Runnable 인터페이스의 임시 객체 형태를 Thread 생성자에 전달 기본문법 Thread t = new Threa..
JAVA
[JAVA] 싱글쓰레드와 멀티쓰레드 예제 [JAVA] 싱글쓰레드로 동작하는 프로그램 [JAVA] 멀티쓰레딩(Multi Threading) [JAVA]쓰레드 개념 익히기 daemon 백그라운드에서 실행되고 있는 프로그램 프로그램(Program) 디스크에 설치되어 있는 실행되기 cutyqueen.tistory.com 이미 클래스를 상속받은 클래스에 멀티쓰레딩을 구현해야 하는 경우 class A { } // 이미 A 클래스를 상속받은 YourThread 클래스에 멀티쓰레딩을 구현해야 하는 경우 // => Thread 클래스를 상속받지 못함(=다중 상속 불가!) //=> Runnable 인터페이스를 구현(implements) 해야함 class YourThread extends A implements Runnab..
[JAVA] 싱글쓰레드로 동작하는 프로그램 [JAVA] 멀티쓰레딩(Multi Threading) [JAVA]쓰레드 개념 익히기 daemon 백그라운드에서 실행되고 있는 프로그램 프로그램(Program) 디스크에 설치되어 있는 실행되기 전 상태의 소프트웨어 프로세스(Process) cutyqueen.tistory.com 메시지 전송 클래스 싱글쓰레드로 구현 class명 : SendMessage 멤버변수 : 메시지(msg, 문자열), 카운트(count, 정수형) 파라미터 생성자(String, int) run() 메서드 : 리턴값 없음, 파라미터 없음, count 만큼 msg 출력 ex) 메시지 전송 - 1 : 안녕하세요 메시지 전송 - 2 : 안녕하세요 class SendMessage { String msg..
[JAVA] 멀티쓰레딩(Multi Threading) [JAVA]쓰레드 개념 익히기 daemon 백그라운드에서 실행되고 있는 프로그램 프로그램(Program) 디스크에 설치되어 있는 실행되기 전 상태의 소프트웨어 프로세스(Process) 설치된 프로그램을 실행하여 cutyqueen.tistory.com 싱글쓰레드로 동작하는 프로그램 싱글쓰레드로 동작하는 프로그램의 경우 하나의 실행이 완료되어야 다음 동작으로 넘어간다. 아래는 입력창에 값을 넣어야만 출력문과 for문이 실행 String input = JOptionPane.showInputDialog("아무값이나 입력하세요"); System.out.println("입력한 값은 "+input+" 입니다.!"); for(int i=10;i>0;i--) { Sy..
[JAVA]쓰레드 개념 익히기 daemon 백그라운드에서 실행되고 있는 프로그램 프로그램(Program) 디스크에 설치되어 있는 실행되기 전 상태의 소프트웨어 프로세스(Process) 설치된 프로그램을 실행하여 메모리에 로딩된 상태(=실 cutyqueen.tistory.com 멀티쓰레딩(Multi Threading) 하나의 프로세스 내에서 두 가지 이상의 작업(Thread)을 동시에 처리 실제로 두 가지 이상의 작업을 동시에 수행하는 것은 아니며,CPU가 빠른 속도로 여러작업을 번갈아가면서 수행하므로 동시에 처리되는 것처럼 느껴짐 = RR(Round Robin)방식이라고 함 멀티쓰레딩으로 처리되는 작업 순서는 고정이 아닌 변동이며 항상 실행결과는 달라질 수 있다! = 운영체제 스케쥴링에 따라 처리되는 순..
daemon 백그라운드에서 실행되고 있는 프로그램 프로그램(Program) 디스크에 설치되어 있는 실행되기 전 상태의 소프트웨어 프로세스(Process) 설치된 프로그램을 실행하여 메모리에 로딩된 상태(=실행중인 프로그램) 자원(resource)와 쓰레드로 구성 멀티태스킹(Multi Tasking) 프로세스가 여러개 일 때 해당 프로세스들이 동시에 수행되는 것 (정확히는 cpu가 빠른 속도로 프로세스들을 번갈아가면서 수행) 예를들어 동영상을 재생하면서 웹페이지 표시, 음악 재생하는 것 쓰레드(thread) 프로세스 내에서 작업의 최소 단위 프로세스 내에서 실제 작업의 수 하나의 프로세스 내에는 최소 한 개의 쓰레드가 동작함(=Single Thread) => 동시에 수행 가능한 작업은 단 한개 뿐이다. 쓰..
String[] str = {"this","is","java","world"}; System.out.println(Arrays.toString(str)); // [this, is, java, world] // 오름차순 정렬 후 : [is, java, this, world] Arrays.sort(str); System.out.println(Arrays.toString(str)); 새로운 정렬기능을 만들려면? 내부적으로 Comparator 의 compare() 메서드를 사용 새로운 정렬 기능을 만들고 Arrays.sort() 에 전달을 하면 됨 자바에서는 함수만 전달할 수 있는 방법이?? 없다! 따라서, 해당 기능을 가지는 객체를 전달해야 한다. 일회용으로 정렬 기능을 작성하려면? (익명 내부 클래스 활용)..
함수형 인터페이스(functional interface) 또는 타겟타입(target type) 람다식은 결과적으로 "인터페이스의 클래스를 손쉽게 구현하는 방법" 반드시 하나의 abstract 메서드만 존재 만약 abstract 메서드가 없거나 두 개 이상 존재한다면 람다식으로 대체할 수 없음 함수형 인터페이스 @FunctionalInterface 어노테이션 선언 함수형 인터페이스를 사용하는 람다식 유형 파라미터와 리턴타입이 없는 경우(파라미터:x, 리턴타입X) @FunctionalInterface interface MyFunc1 { // 함수형 인터페이스 어노테이션(@FunctionalInterface) 선언 시 발생! // => 함수형 인터페이스는 반드시 하나의 추상메서드(abstract method)..