나는 다중 스레드 자바 프로그램을 가지고 있으며 때로는 네트워크 설정을 일부 변경해야하는 예외를 throw합니다. 내가 직면하고있는 문제는 실행중인 모든 스레드가 문제를 일으키는 것을 시도한다는 것입니다. catch 블록에서 코드를 실행하는 실행중인 스레드 중 하나만 만드는 방법이 있습니까?실행중인 스레드 중 하나만 catch 블록을 실행하게합니까?
이렇게하면 동시에 여러 변화를 방지하고 여전히 적절한 피드백을 제공 할 수 있도록 네트워크 설정 변경을 처리하기 위해 하나의 중앙 서비스를 필요로 내 catch 블록
catch (ElementNotFoundException e)
{
System.out.println("Element not found!");
e.printStackTrace();
IpManager.changeDSLIp();
}
catch (Exception e)
{
e.printStackTrace();
}
자물쇠를 사용할 수 있습니까? 세마포어? – Gabe
* 가능한 코드가 보이십니까? Finite State Machine 또는 동기화 된 블록이 필요할 수도 있습니다 ... –
동기화 된 기능 또는 차단하십시오! – Rugal