Language (5) 썸네일형 리스트형 [Kotlin] - Channels Channel을 사용하면 서로 다른 코루틴들이 손쉽게 하나의 값을 공유할 수 있다. 채널은 BlockingQueue 와 유사하게 동작하며 값을넣기 위해 send() 를 사용하고, 값을 꺼내기 위해서 recieve() 를 사용한다. Channelfun main(){ val ch = Channel() runBlocking { launch { for(x in 1..5) { ch.send(x * x) println("-----") } } repeat(5){ println(ch.receive()) } }}// -----// 1// 4// .. [Kotlin] - 기본 문법 정리 그냥 막 정리하는 코틀린의 기본문법 !!!! ✅ call back 함수 ✅fun main(){ doSomething() // 아무 동작 안함 doSomething{num, str -> println("$num : $str")} // 1 : 1}fun doSomething(callback: (Int, String) -> Unit = {_, _ -> }) { callback(1, "1")}doSomething{num, str -> println("$num : $str")} == doSomething( {num, str -> println("$num : $str")} ) ✅ generic type에서의 call back 함수 ✅fun main(){ processData(111).. [Kotlin] 제네릭 generic타입 코틀린 + 스프링을 사용하는 회사 코드에 제네릭 타입이 많이 사용되는데 이참에 제네릭에 대해 정리하고 넘어가고자 한다 ! ✅ What is Generic ✅ 먼저 제네릭이란,자료형의 객체들을 다루는 메서드나 클래스에서 컴파일 시간에 자료형을 검사해 적당한 자료형을 선택할 수 있게 해주는 것 이다보통 앵글 브래킷() 사이에 형식 매개변수(자료형을 대표하는 용어, T와 같이 특정 영문의 대문자 사용)를 사용해 선언한다fun main(){ val appleStr = Fruit("apple") val bananaInt = Fruit(111)}class Fruit(t: T) { val value = t} 그렇다면 굳이 Any 를 사용하지 않고 generic 을 사용하는 이유가 뭘까 ✅ Any ty.. [Kotlin] 코루틴 (2) - Cancellation and Timeouts 중단함수 : 실행 중 취소 가능한 구간마다 취소 요청이 있었는지 확인하고 요청이 있었다면 실행을 즉시 취소하도록 구현runBlocking { val job = launch(Dispatchers.Default) { for (i in 1..10) { yield() println("I'm sleeping $i ...") Thread.sleep(500L) } } delay(1300L) println("main : I'm tired of waiting!") job.cancelAndJoin() println("main : Now I can quit.")}runBlocking { val job =.. [Kotlin] 코루틴 (1) - Basic GlobalScope.launch {} : 코루틴을 생성하기 위한 코루틴 빌더이며 실행중인 스레드를 블록하지 않음fun main(){ GlobalScope.launch { delay(1000) //1 println("world") //오기전에 종료 } println("hello") //2}// hello - 위의 코드는 hello를 찍은 후 쓰레드가 종료된다 runBlocking{} : 주어진 블록이 완료될때까지 현재 스레드를 멈추는 새로운 코루틴을 생성하여 실행하는 코루틴 빌더runBlocking { GlobalScope.launch { delay(1000) //1 println("world") //오기전에 종료 } .. 이전 1 다음