본문 바로가기

분류 전체보기

(256)
Thread_join // join(): // 현재 실행 중인 스레드를 일시 중지하고, 스레드 s1이 종료될 때까지 기다립니다. // --> 즉, 스레드 s1의 작업이 완료되기를 기다린 후, 다음 작업을 수행합니다. // Vector : 동기화된(synchronized) 동작을 보장하는 리스트 구현체 // 요소들을 순서대로 저장하며, 인덱스를 사용하여 요소에 접근할 수 있습니다. // 단일 스레드 환경에서는 ArrayList나 LinkedList 등의 비동기화 컬렉션을 사용하는 것이 더 효율적일 수 있다 class Some extends Thread{ public void run() { for(int x = 0 ; x < 200 ; x++) { Data2.list.add("그냥");// 1. Data2클래스의 list에 20..
Thread 기본개념 활용 class SomeThread extends Thread{ private String name; public SomeThread(String name) { this.name = name; } public void run() { for(int x = 0 ; x < 1000 ; x++) { System.out.println(name + "] " + x); } } } new SomeThread("안녕").start(); new SomeThread("반가웡").start(); new SomeThread("hello").start(); for(int x = 0 ; x < 1000 ; x++) { System.out.println("main] " + x); } // 원래내가하던것: 매서드 run호출 // 위에서부터..
Thread 생성 및 호출 방법 // 스레드를 생성하는 2가지 방법: // 1. thread클래스 상속 // 2. Runnable 인터페이스(= thread가 포함된 인터페이스) 상속 - 람다식 // 방법1. class Some1 extends Thread{ public void run() { } } // 방법2. class Some2 implements Runnable{ @Override public void run() { } } // 호출방법 // 방법1 호출 new Some1().start(); // 방법2 호출 new Thread(new Some2()).start();
Thread Basic ## 쓰레드: 비동기식 // # 특징: // 프로세스 내에서 실행되는 독립적인 실행 흐름 // 쓰레드는 프로세스 내에서 실행되며, 하나의 프로세스는 여러 개의 쓰레드를 가질 수 있습니다. // 프로세스 내에서 코드를 병렬로 실행하고, 서로 공유하는 메모리 공간을 가짐 // --> 데이터를 공유하며 효율적으로 작업을 수행할 수 있습니다 // ** 프로세스: // 운영 체제에서 실행 중인 프로그램의 인스턴스 // --> 각 프로세스는 자체 메모리 공간과 리소스를 가집니다. // 1. 기존방법 class Test{ public void rrr() { System.out.println("하이"); } // 1. 기존방법 : 메서드 호출 등등... 내가 이전에 하던 모든것은 다 동기식!(= 스레드가 아님) Tes..
Interface review // interface : // 각 클래스가 공통 인터페이스를 구현함으로써 통일된 동작을 제공하고, 다른 클래스와 상호 작용할 수 있도록 함 // --> 상속 용도의 클래스..! 근데 일종의 계약이야. // --> 인터페이스를 구현하는(= 계약한) 클래스는 해당 인터페이스에 정의된 모든 메서드를 반드시 구현해야 힘 // --> 이때, implements 키워드를 사용하여 클래스가 특정 인터페이스를 구현한다고 선언한다!! // 이제 main에 클래스 대신 interface를 선언 --> 싹다 추상화임 // 인터페이스는 하위 클래스에서 구현될 '메소드만 선언하고, 구현은 하지 않는다' // ★★★ 메소드는 무.조.건. public!!! (일반적 표현방법 : public + return타입 + 매소드명 + (..
interface 활용ex - self // 하위티어에서 구현할 메서드를 선언하는 인터페이스 생성 interface Occupation{ String print();// --> 하위 티어에서 오버라이딩할 메서드라고 생각하자. } class Student implements Occupation{ private String name; private String doWhat; Student(String name, String doWhat){ this.name = name; this.doWhat = doWhat; } public String print() { return "이름 : " + name + ", 하는일 : " + doWhat; } } class Nurse implements Occupation { private String name; pr..
Abstract Class_ 스타ex활용 // Abstract Class : 클래스, 메서드 또는 속성을 추상적으로 정의할 때 사용 (= 정말 상속만을 위해 정의된 클래스.) // --> 추상 클래스는 객체를 직접 생성할 수 없으며, 하위 클래스에서 추상 메서드를 구현해야 함 // --> 추상 클래스는 상속과 다형성을 구현하는 데 사용됨 // Abstract Method : 메서드의 시그니처만 선언되고 메서드의 본문은 제공되지 않는다. // ★★★답정너 : abstract class를 상속받은 하위클래스는 무조건! abstract된 메서드를 오버라이딩 해야한다 ★★★ // --> 근데 abstract 잘안써^^...; 이유는 다음 클래스에서....ㅎ abstract class Unit{ int hp; int ap; int speed; //voi..
Overiding // 상속 + 다형성 + 오버라이딩 TIP : 문법과 런타임을 다르게 생각하자! class AAA{ int a1; int a2; void print() { System.out.println("AAA의 print메서드란다"); } void qqq() { System.out.println("AAA의 qqq메서드"); } } class BBB extends AAA{ void test() { System.out.println("BBB의 test메서드란다"); } // ★★★ 오버라이딩 문법 --> 하위 클래스가 상위 클래스의 메서드를 '재정의'하는 과정 //--> 상위 클래스의 메서드와 동일한 이름, 매개변수 목록, 반환 유형을 가져야 함 ★★★ // (메소드명, 파라메터, 리턴타입) void print() {..