: 멀티 스레드를 사용할 것이라면 StringBuffer를 사용,
단일 스레드를 사용할 것이라면 StringBuilder를 사용한다.
스레드란? 프로세스안에서 실질적으로 작업을 실행하는 단위
이삿짐을 나르는데 멀티 스레드는 여러 명이 동시에 짐을 나르는 것을 생각해주세요.
단일 스레드는 혼자 짐을 나르는 것을 생각하시면 편합니다.
여러 명이 나르면 더 빠르게 짐을 옮길 수 있습니다.
보통 RAM 크기가 크면, 더 많은 스레드를 사용할 수 있습니다.

로 해석하시면 편합니다.
즉, 토큰은 분리된 문자열 조각으로, StringTokenizer 클래스는 하나의 문자열을 여러 개의 토큰으로 분리하는 클래스입니다.
BufferedReader 클래스의 메서드로 입력을 받아들인다면 라인 단위로 읽어 들일 수 밖에 없습니다. 꼭 BufferedReader 클래스만이 아니더라도, 스페이스 기준으로 혹은 ,(컴마)로 혹은 공백을 기준으로 문자열들을 분리한다던가 특정 문자에 따라 문자열을 나누고 싶을 때 StringTokenizer를 사용합니다.
StringReader 클래스와 StringWriter 클래스는 문자열을 스트림에 기록하거나 읽어낼 때 사용하는 클래스입니다.
StringReader 클래스는 Read() 메서드를 이용해서 데이터를 읽어들이고, 읽어들인 데이터를 StringWriter의 Write() 메서드를 이용하여 스트림에 기록하게 됩니다.
💡 StringBuffer getBuffer() : StringWriter에 출력한 데이터가 저장된 StringBuffer를 반환.BufferedReader : 버퍼를 이용한 입력
BufferedWriter : 버퍼를 이용한 출력
BufferedReader : Scanner보다 빠르게 입력을 받고 싶을 때 사용.
BufferedWriter : System.out.println(); 보다 빠르게 출력을 하고 싶을 때 사용.
String : 문자열
StringReader : 빠르게 문자열을 읽을 때 사용.
StringWriter : 빠르게 문자열을 출력할 때 사용.
StringTokenizer : 문자열을 분리할 때 사용.
StringBuffer : 문자열을 다룰 때 사용 + 멀티 스레드 환경
StringBuilder : 문자열을 다룰 때 사용 + 단일 스레드 환경