ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] Java IO, NIO
    Android/Java 2021. 2. 22. 14:47
    ๋ฐ˜์‘ํ˜•
    • ์ด ๊ธ€์€ "์ž๋ฐ” ์˜จ๋ผ์ธ ์Šคํ„ฐ๋””"์—์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์—ฌ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    Java IO

    ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ณผ์ •์€ ํ•„์—ฐ์ ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋‚˜ ํ‚ค๋ณด๋“œ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ž…๋ ฅ์„ ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ์ „์†ก์„ ํ•˜๊ฑฐ๋‚˜, ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ชจ๋‹ˆํ„ฐ๋‚˜ ํŒŒ์ผ ๋“ฑ์œผ๋กœ ๋ณด๋‚ด์–ด ์ถœ๋ ฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ŠคํŠธ๋ฆผ(stream) ํ˜•ํƒœ๋กœ ์ž…์ถœ๋ ฅ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ์ด๋ž€ ์ถœ๋ฐœ์ ์—์„œ ๋„์ฐฉ์ ๊นŒ์ง€ ์—ฐ์†์ ์œผ๋กœ ํ˜๋Ÿฌ๊ฐ„๋‹ค๋Š” ๊ฐœ๋…์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.

    https://www.logicbig.com/tutorials/core-java-tutorial/java-util-stream/stream-cheat-sheet.html

    ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ์„ ๊ฐ€์ง€๊ณ  ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ๋™์‹œ์— ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์†ก์‹ ์ธก์ธ์ง€, ์ˆ˜์‹ ์ธก์ธ์ง€์— ๋”ฐ๋ผ ์ŠคํŠธ๋ฆผ์˜ ์ข…๋ฅ˜๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ฒŒ ๋  ๋•Œ๋Š” InputStream์„ ์‚ฌ์šฉํ•˜๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•  ๋•Œ๋Š” OutputStream์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    https://coding-factory.tistory.com/281

    ์ž๋ฐ”์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ์€ Java.io ํŒจํ‚ค์ง€์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์—์„œ ๋ณด์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ Java.io ํŒจํ‚ค์ง€์—๋Š” File ํด๋ž˜์Šค์™€ ๋‹ค์–‘ํ•œ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    InputStream

    https://velog.io/@ljs0429777/Java-IO

    InputStream์€ ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋กœ abstract class์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์€ InputStrem ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class IOstream {
        public static void main(String[] args) {
    
            FileInputStream fileInputStream = null;
            String inputFilePath = "src/IOExample.java";
    
            try {
                fileInputStream = new FileInputStream(inputFilePath);
                int i = 0;
    
                do{
                    i = fileInputStream.read();
                    System.out.print((char)i);
                }while(i!=-1);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    OutputStream

    https://velog.io/@ljs0429777/Java-IO

    OutputStream๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋กœ abstract class์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ๋„ ์ด ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class IOstream {
        public static void main(String[] args) {
    
            FileInputStream fileInputStream = null;
            FileOutputStream outputStream = null;
            String inputFilePath = "src/IOExample.java";        // ํŒŒ์ผ๋ช…
            String outputFilePath = "src/NewIOExample.java";        // ํŒŒ์ผ๋ช…
    
            try {
                fileInputStream = new FileInputStream(inputFilePath);
                byte[] b = new byte[10];
                System.out.println(fileInputStream.read(b));
                System.out.println((new String(b)));
    
                outputStream  = new FileOutputStream(outputFilePath);
                outputStream.write(b);
    
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    Character Stream

    ์œ„์— ์„ค๋ช…์„ ํ•œ InputStream๊ณผ OutputStream ๋ชจ๋‘ ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋กœ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ „์†กํ•˜๋Š” ์ž…์ถœ๋ ฅ ๋Œ€์ƒ์— ๋”ฐ๋ผ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค๋งŒ ๋‹ค๋ฅผ ๋ฟ์ž…๋‹ˆ๋‹ค. Charater Stream์€ ๋ฌธ์ž ๋‹จ์œ„ ๊ธฐ๋ฐ˜ ์ž…์ถœ๋ ฅ์œผ๋กœ Reader์™€ Writer ํด๋ž˜์Šค๊ฐ€ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ž๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์ž…๋‹ˆ๋‹ค.

    https://velog.io/@ljs0429777/Java-IO/

    import java.io.FileReader;
    import java.io.IOException;
    import java.io.Reader;
    
    public class IOstream {
        public static void main(String[] args) {
    
            Reader reader = null;
            String inputFilePath = "src/IOExample.java";
    
            try {
                reader = new FileReader(inputFilePath);
                int data = 0;
    
                do{
                    data =  reader.read();
                    System.out.print((char)data);
                }while(data!=-1);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ

    Java์—์„œ๋Š” System ํด๋ž˜์Šค์˜ in, out, err๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‚ค๋ณด๋“œ๋ฅผ ํ†ตํ•œ ์ž…์ถœ๋ ฅ ๋ฐฉ๋ฒ•์ธ ํ‘œ์ค€ ์ž…์ถœ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. System ํด๋ž˜์Šค๋Š” ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์ด ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” ํ‘œ์ค€ ์žฅ์น˜ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์€ ๊ทธ ์ž์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ ํ”Œ๋žซํผ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ‘œ์ค€ ์ž…๋ ฅ๊ณผ ํ‘œ์ค€ ์ถœ๋ ฅ์ด System ํด๋ž˜์Šค์— ๋“ฑ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

    1. System.in

    System.in์€ inputstream ์œผ๋กœ ์‹ค์ œ inputstream์€ ์ถ”์ƒํด๋ž˜์Šค์—ฌ์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์ง€๋งŒ System.in์€ ์‹ค์ œ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜์—ฌ ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    1. System.out

    Systemout์€ ํ‘œ์ค€ ์ถœ๋ ฅ์žฅ์น˜๊ณ  PrintStream ํƒ€์ž…์ž…๋‹ˆ๋‹ค. PrintStream์€ OutputStream ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ Exception์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•œ ๋ฉ”์†Œ๋“œ๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋กœ System.out์œผ๋กœ ์ถœ๋ ฅ ์‹œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

    1. System.err

    System.err ๋Š” ํ‘œ์ค€ ์—๋Ÿฌ ์ถœ๋ ฅ ์žฅ์น˜๋กœ PrintStream ํƒ€์ž…์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์—๋Ÿฌ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ๋Š” System.out๊ณผ ๋™์ผํ•˜์ง€๋งŒ, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์ „๋‹ฌํ•ด์•ผํ•  ๋‚ด์šฉ์€ System.err๋กœ ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.

    import java.io.IOException;
    
    public class SystemStream {
        public static void main(String[] args) {
    
            int count = 0;
            int data;
            try{
                while((data = System.in.read())!=-1){
                    count++;
                    System.out.write(data);
                }
            } catch (IOException e) {
                e.printStackTrace();
                System.err.println(e);
            }
    
            System.out.println();
            System.out.println("total bytes : "+count);
        }
    }

    Java NIO

    ์ž๋ฐ”์˜ NIO(New I/O)๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์ „์— NIO๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Java I/O์˜ ํฐ ๋‹จ์ ์ธ ์˜ค๋žœ์‹œ๊ฐ„์€ ์ž๋ฐ”์–ธ์–ด์˜ ํŠน์„ฑ์œผ๋กœ ์ปค๋„ ๋ฒ„ํผ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ๊ณผ I/O ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฑฐ์น˜๋Š” ๋™์•ˆ ์ž‘์—… ์š”์ฒญํ•œ ์“ฐ๋ ˆ๋“œ๋Š” ๋ธ”๋กํ‚น๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    https://ohjongsung.io/2019/09/07/java-nio-%ED%86%BA%EC%95%84%EB%B3%B4%EA%B8%B0/

    ์ž๋ฐ” I/o ํ”„๋กœ์„ธ์Šค ๊ณผ์ •

    1. ํ”„๋กœ์„ธ์Šค๊ฐ€ file์„ ์ฝ๊ธฐ ์œ„ํ•ด kernel ๋ช…๋ น์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
    2. Kernel์€ system call(read())์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    3. ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ฌผ๋ฆฌ์  ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ํŒŒ์ผ์„ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.
    4. DMA(Direct Memory Access)์„ ์ด์šฉํ•˜์—ฌ ์ปค๋„ ๋ฒ„ํผ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
    5. Process ๋‚ด๋ถ€ ๋ฒ„ํผ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    ๊ธฐ์กด I/O์˜ ๋ฌธ์ œ

    • JVM ๋‚ด๋ถ€ ๋ฒ„ํผ๋กœ ๋ณต์‚ฌ์‹œ, CPU ์—ฐ์‚ฐ์ด ํ•„์š”ํ•œ๋ฐ CPU ์—ฐ์‚ฐ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํฌ๊ฒŒ ์žก์•„๋จน๊ฒŒ ๋œ๋‹ค.
    • Java I/O ๋‚ด๋ถ€ ๋ฒ„ํผ๋กœ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜๋Š” GC ๋Œ€์ƒ์ด ๋˜๋Š”๋ฐ ์ด ์—ญ์‹œ๋„ ํฐ ์˜ค๋ฒ„ํ—ค๋“œ ์š”์†Œ์ž…๋‹ˆ๋‹ค.
    • I/O ์š”์ฒญ๋œ ์“ฐ๋ ˆ๋“œ๋Š” ๋ธ”๋กํ‚น์ด ๋˜์–ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ๋กœ ๋ณต์‚ฌํ•˜๋Š”๋ฐ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋ฅผ ์ง€์›ํ• ์ง€๋ผ๋„ ์ˆ˜๋งŽ์€ ์š”์ฒญ ์‹œ์— Context-Swithing์•  ๋”ฐ๋ฅธ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ํด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    Buffer I/O

    IO์—์„œ์˜ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์€ ํ•œ ๋ฐ”์ดํŠธ์”ฉ ์ฝ๊ณ  ์ถœ๋ ฅ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. cpu์˜ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ์ž…์ถœ๋ ฅ ์†๋„๋Š” ๋Š๋ฆฌ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์ž…์ถœ๋ ฅ์„ ๋ฐ›๊ฒŒ ๋˜๋ฉด cpu์˜ ํšจ์œจ์„ ์ตœ๋Œ€ํ•œ์œผ๋กœ ์ด๋Œ์–ด ๋‚ผ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฐ”์ดํŠธ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ž…๋ ฅ๋ฐ›๊ณ  ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ํ•œ๋ฒˆ์— ์ถœ๋ ฅํ•˜๋Š” ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๋†’์ž…๋‹ˆ๋‹ค. I/O๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฒ„ํผ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋ฒ„ํผ ์ œ๊ณตํ•ด์ฃผ๋Š” ์ŠคํŠธ๋ฆผ์ธ BufferedInputStream๊ณผ BufferedOutputStream์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. NIO์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฒ„ํผ๊ฐ€ ์ง€์›๋˜๋ฉฐ, ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Buffer ํด๋ž˜์Šค๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


    Channel I/O

    ๊ธฐ์กด I/O๋Š” blocking ๋ฐฉ์‹์ด๊ธฐ ๋–„๋ฌธ์— ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ, ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์ด ๋‹ฌ๋ž์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Java NIO๋Š” Non-blocking ๋ฐฉ์‹์ด๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ ์Šค๋ ˆ๋“œ์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ„ ๋ฒ„ํผ ์‚ฌ์ด์˜ ์ผ์ข…์˜ ํ„ฐ๋„์„ ๋งŒ๋“ค์–ด ์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ญํ• ์„ ์ฑ„๋„์ด ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    https://adrian0220.tistory.com/150/

    • Socket๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์ž…์ถœ๋ ฅ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋™์‹œ์— ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • Selector์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , ํ•˜๋‚˜์˜ Selector์—๋Š” ๋‹ค์ˆ˜์˜ ์ฑ„๋„์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

    selector

    ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์˜ ์—ฌ๋Ÿฌ ์ฑ„๋„์ด ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค I/O์™€ ์ž…์ถœ๋ ฅ์„ ํ•  ์ง€ ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ Selector๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์–ด๋Š I/O์— ์—ฐ๊ฒฐํ• ์ง€๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Selector๋Š” ์ฑ„๋„์„ ์„ ํƒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ•˜๊ณ , ์„ ํƒ๋œ ์ฑ„๋„์ด ์Šค๋ ˆ๋“œ์™€ ๋ฒ„ํผ๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ I/O๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด NIO์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

    ๋ฐ˜์‘ํ˜•

    'Android > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [Java] ๋žŒ๋‹ค์‹์ด๋ž€?  (0) 2021.03.21
    [Java] Java Generic(์ œ๋„ค๋ฆญ)  (0) 2021.03.01
    [Java] Annotation, Meta data๋ž€?  (0) 2021.02.19
    [Java] Enum์ด๋ž€?  (0) 2021.02.14
    [Java] ์ž๋ฐ” ์“ฐ๋ ˆ๋“œ ๊ต์ฐฉ์ƒํƒœ(deadlock)  (2) 2021.02.07
Designed by Tistory.