NetBeans에 다음과 같은 새로운 힌트가 있습니다. 루프에서 Thread.sleep이 호출되었습니다.NetBeans/Java/New 힌트 : 루프에서 호출 된 Thread.sleep
질문 1 : 언제 어떻게 반복해서 잠을 자는데 문제가 될 수 있습니까?
질문 2 : 문제가 있다면 대신 무엇을해야합니까?
업데이트 : 질문 3 : 여기에 몇 가지 코드가 있습니다. 루프에서 Thread.Sleep 대신 다른 것을 사용해야한다면이 경우에 대해 알려주십시오. 요컨대, 이것은 클라이언트 TCP 연결을 청취하는 서버에 의해 사용됩니다. 절전 모드는 클라이언트와의 세션 수가 최대 인 경우에 사용됩니다. 이 상황에서 무료 세션을 사용할 수있게 될 때까지 응용 프로그램을 대기시키고 싶습니다.
public class SessionManager {
private static final int DEFAULT_PORT = 7500;
private static final int SLEEP_TIME = 200;
private final DatabaseManager database = new DatabaseManager();
private final ServerSocket serverSocket = new ServerSocket(DEFAULT_PORT);
public SessionManager() throws IOException, SQLException
{
}
public void listen()
{
while (true)
if (Session.getSessionCount() < Session.getMaxSessionCount())
try
{
new Thread(new Session(database, serverSocket.accept())).start();
}
catch (IOException ex) { ex.printStackTrace(); }
else
try
{
Thread.sleep(SLEEP_TIME);
}
catch (InterruptedException ex) { ex.printStackTrace(); }
}
public static void main(String[] args) throws IOException, SQLException
{
new SessionManager().listen();
}
}
java.util.Timer 및주기적인 TimerTask는 어떻습니까? – Core
@Core - 사용 방법에 따라 다릅니다. 'sleep()'과 같은 것을 구현하기 위해서이 함수를 사용한다면, sleep()을 사용할 때와 같은 문제가있다. –
우리는 managedexecutorservice를 어떻게 사용합니까? – wib