분류 전체보기102 [Kotlin 문법 종합] - 쓰레드, 코루틴 (# 추가하기) 1. 쓰레드 : 로직을 동시에 실행할 수 있게 함 // thread 키워드로 생성 - 작업 하나하나의 단위 : Thread (각각 독립적인 스택메모리영역 가짐) - 하나의 메인 쓰레드가 존재 = 메인함수 = 실행흐름 //최소 1개의 메인 쓰레드는 존재해야 - 동시성 보장 수단 : Context Switching (운영체제 커널에 의한) * Blocking : 스레드 A가 스레드 B의 결과를 기다리고 있을 때, A는 블로킹 상태. - A는 B의 결과가 나오기 전에는 해당 자원을 사용하지 못함 - 스레드 A가 task 1을 수행하는 동안 task 2의 결과가 필요 -> 스레드 B를 호출함 - 스레드 B 호출-> (1) 스레드 A는 블로킹됨 (2) 스레드 B로 프로세스 간 스위칭 발생 -> task 2 수행 .. 2024. 3. 6. [Kotlin 문법 종합] - 확장함수, 비동기 프로그래밍 @@@수정하기 1. 확장함수 : 기존 클래스에 쉽게 메소드 추가가 가능 //지금까지는 클래스에 원하는 메소드를 다 정의하고 시작했음 - 자바와 달리 외부에서 클래스의 메소드 추가 가능 (+) 내 목적을 위해 외부에서 관리해, 원본 클래스의 일관성 유지 가능 (-) 과도한 사용 시 가독성 해침 *주의사항 1) 확장함수는 public 멤버에만 접근 가능 2) private, protect 멤버에 접근하려면 클래스 내부 멤버함수 형태가 적합 //-> getter setter st인듯... 3) 클래스의 멤버함수처럼 상속할 수 없음 = 하위 클래스에서 확장함수를 리디파인(오버라이드) 불가능 fun String.isEmailValid(): Boolean { val pattern = "[a-zA-Z0-9._-]+@[a-z]+\\.. 2024. 3. 6. [Kotlin 문법 종합] - 여러 인스턴스 리턴, 자신의 객체 전달 @@수정하기 1. 여러 인스턴스 리턴 : 두 개 이상의 데이터를 포함하는 데이터클래스를 만들고 인스턴스 리턴하기 //메소드는 기본적으로 하나의 데이터를 리턴함 1) Pair = 2개의 인스턴스 리턴 var chicken = Chicken() var eggs = chicken.getEggs() var listEggs = eggs.toList() // 리스트로 관리 var firstEgg = listEggs[0] // = eggs.first var secondEgg = listEggs[1] // = eggs.second println("달걀의 종류는 ${eggs} 입니다.") //(달걀, 맥반석) // Pair println("리스트 달걀의 종류는 ${listEggs} 입니다.") //[달걀, 맥반석] // toList.. 2024. 3. 6. 이전 1 ··· 26 27 28 29 30 31 32 ··· 34 다음