본문 바로가기
728x90
반응형

Thread3

11. Python - Thread를 사용한 여러 기능 동시 실행(1) 최근 필자는 완성하지 못한 개인 프로젝트를 싸그리 중단하고 from the scratch로 다시 하나씩 코드를 작성해나가는 중이다(Linux 제어 코드부터 진행중이다. PEP8 Convention도 맞추고, 몇 개월 지나면 알아볼 수도 없는 코드도 줄일 겸). 필자가 진행 중인 프로젝트 중 하나를 잠깐 소개하자면, Linux로 인가받지 않은 사용자가 로그인을 시도하는 경우 해당 침입자의 IP를 firewalld에 Drop 정책으로 등록하는 과정을 실시간 + 자동으로 진행하도록 만드는 프로그램의 제작이다(필자가 만들고자하는 프로그램과 유사한 프로그램이 오픈 소스로 있었는데 이름을 잊어버렸다...). Linux에 로그인을 시도하는 사용자의 정보는 보통 /var/log/secure 파일에 저장된다. 위의 스크.. 2024. 3. 22.
[Java Basic] 45 - Java Thread 4 - Lock 클래스, Condition 인터페이스 지난 포스팅에서 예시로 들었던 뷔페 코드를 조금 변경해보았다(진상 손님은 구현하지 않았다). 우선 wait()과 notify() 매서드 호출 코드는 제외한 상태다. 이 상태에서 코드를 실행해보자. 아마 고객들이 첫 음식을 가지고 간 다음 Chef가 음식을 서빙하는 과정에서, 테이블에 음식이 5개가 되면 Chef Thread에서 lock이 해제가 되지 않음을 알 수 있을 것이다. 이러한 이유로 필자는 Synchronized 동기화 된 매서드 내부에 wait(), notify()로 lock의 강제 해제와 lock 보유 허용을 가능하게 하도록 코드를 작성했었다. 하지만, 이전 포스팅에서 언급했듯이 synchronized와 wait(), notify()만으로는 특정 Thread를 선별하여 lock을 걸거나 해제.. 2022. 9. 25.
[Java Basic] 42 - Java Thread 1 - Thread와 ThreadGroup 지금가지 필자가 작성한 모든 프로그램은, 컴퓨터가 실행할 시 필자가 작성한 main 함수 코드의 상단부터 순차적으로 실행하면서 내려오고, Main 함수 내 코드 실행이 완료되면 종료하는 형태로 진행되었다. 그래서 서로 다른 클래스의 매서드를 순차로 호출하면, 먼저 호출된 매서드가 종료되고 나서야 다음 호출된 매서드가 실행이 된다. 그러나 하나의 프로그램에서 순차적으로 코드를 진행하는 방식은 최근에는 아예 사용할 수 없는 방식이다. 예를 들어, 사람들이 의사소통을 위해 사용하는 메신저의 경우, 메세지 전송을 위해 글자를 적고 있는 와중에도 상대편이 보낸 메세지가 채팅창에 나타나야하기 때문이다. 만약 글자 입력하는 중이라고 상대방이 보낸 메세지가, 입력이 다 끝나고 도착하는 상황이 벌어진다면 메신저로의 의사.. 2022. 9. 19.
728x90
반응형