카테고리 없음

20240830 14일차

happyst 2024. 8. 30. 17:37

[자료구조]
자료구조 시각화 참고 사이트: https://visualgo.net

[Singly Linked List]
addFirst : O(1)
  1) Node 생성, 값을 할당
  2) 생성한 node를 가리킨다
  3) size++
- addLast: O(N)
get: O(N)




[프로세스와 스레드]
[프로세스]
- 실행 중인 프로그램
- 프로세스끼리는 서로 독립적

[스레드]
- 하나의 실행 흐름으로 프로세스 내부에 존재
- 하나의 프로세스는 하나 이상의 실행 흐름을 포함하기 때문에 프로세스는 적어도 하나의 스레드를 가짐

[멀티태스킹 (Multitasking)]
- 운영 체제가 여러 프로그램이나 작업을 동시에 실행하는 것
- 멀티 코어 CPU라면 실제로 다수의 애플리케이션을 동시에 병렬처리, 싱글 코어 CPU라면 운영체제가 다수의 애플리케이션을 병행처리

[멀티스레드 (Multithreading)]
- 하나의 프로세스 내에서 여러 스레드가 동시에 실행되는 것

[Thread.run( ) vs Thread.start( )]
- Thread.run( ):
  * 직접 실행: run() 메서드를 호출하면, 새로운 스레드를 생성하지 않고 해당 메서드를 호출한 현재 스레드에서 실행됨. 즉, 메서드가 일반적인 자바 메서드처럼 동작함
  * 멀티스레딩 효과 없음: run() 메서드를 직접 호출하면 멀티스레딩의 장점이 없어지고, 스레드가 아닌 일반 메서드 호출처럼 동작함

- Thread.start( ):
  * 새로운 스레드 생성: start() 메서드를 호출하면 JVM이 새로운 스레드를 생성하고, 그 스레드 내에서 run() 메서드가 호출됨
  * 병렬 실행: start()를 사용하면 새로운 스레드가 생성되어 run() 메서드가 병렬로 실행되므로, 멀티스레딩의 이점을 활용할 수 있음