thread

    [Java] Runnable과 Thread의 차이

    [Java] Runnable과 Thread의 차이

    자바에서 쓰레드를 구현할 때 2가지 방법이 있다고 한다. 1. Runnable 2. Thread 1. Runnable Runnable은 이름부터 인터페이스의 느낌이 강하다. implements Runnable 을 통해서 Runnable 인터페이스를 구현할 수 있다. Runnable 인터페이스를 구현하게되면 재사용성이 높고, 코드의 일관성을 유지할 수 있어서 Thread보다 더 효율적인 방법이라 할 수 있다. Runnable 인터페이스는 위와 같이 생겼다. 추상 메서드 run을 반드시 구현해야 한다. Thread도 run을 구현해야 한다는 점은 같지만 추상 메서드가 아니라 단순 메서드 오버라이딩으로 구현한다. Runnable 인터페이스를 구현해 스레드 구현 public class Main { public ..

    [Djnago] Django 이메일 인증하기(Thread)

    비밀번호를 찾기 위해서 가입 했던 이메일로 인증번호을 보내는 기능에 대한 설명 ## users/apis.py class SendPasswordEmailApi(PublicApiMixin, APIView): def post(self, request, *args, **kwargs): """ 비밀번호 변경 인증 코드 발송 """ target_username = request.data.get('username', '') target_email = request.data.get('email', '') target_user = User.objects.filter( username=target_username, email=target_email ) if target_user.exists(): auth_string = ..

    [OS] Thread #1

    [OS] Thread #1

    Thread 스레드가 뭘까? 왜 있는걸까? 싱글 프로세스는 멀티코어 CPU의 장점을 활용할 수가 없다. 새로운 프로세스를 만드는데는 많은 자원이 필요하다. (시간, 메모리 공간) 프로세스간의 통신 오버헤드가 크게 발생한다. 프로세스간에 context swiching 비용이 크다. 위와 같은 프로세스의 단점을 보완하기 위해서 스레드가 탄생했다. 하나의 프로세스는 여러개의 스레드를 가질 수 있다. 프로세스는 각자의 고유 메모리를 가지고 있기 때문에 프로세스 내부의 스레드들은 하나의 메모리 공간을 공유한다. 그리고 스레드는 각자의 program counter와 stack pointer를 가진다. 위 사진처럼 스레드가 많아질 수록 프로세스의 메모리 공간이 각각의 stack공간으로 채워짐을 알 수 있다. 그리고 ..