Java: Thread.current스레드().sleep(x)와실.sleep(x)
이건 내 코드에 있어
Thread.currentThread().sleep(x);
이클립스는 나에게 잡음을 쓰라고 말한다.
Thread.sleep(x);
대신, 왜?차이점은 무엇입니까? 이 두 가지 방법 사이에 기능상의 차이가 있습니까?
두 가지 방식이 아닌 하나의 방식만 있으며 정적입니다.인스턴스 참조를 통해 정적 메서드를 호출할 수 있지만 스타일은 좋지 않습니다.이는 프로그래머가 인스턴스 메서드를 호출하고 있다고 생각함을 나타냅니다.혼란스러운 프로그래머는 현재의 스레드가 아닌 다른 스레드를 이 방법으로 잠들어 버릴 수 있다고 생각할 수 있습니다.
두 코드 라인이 같은 작업을 수행하지만 두 번째 코드가 더 나은 스타일입니다.
Java에서 sleep은 정적 방법입니다.두 예제 모두 동일한 작업을 수행하지만 이전 버전은 특정 개체에 대해 메서드를 호출하는 것처럼 보이지만 전혀 그렇지 않기 때문에 혼동됩니다.이 예에서는 크게 문제가 되지 않지만 다음과 같은 것이 있으면 더 위험합니다.
someOtherThread.sleep(x);
이번에는 다른 실에 재우라고 말하는 것처럼 보이지만, 실제로는 현재의 실에 재우라고 하는 것입니다.이러한 유형의 실수를 피하는 방법은 항상 특정 개체가 아닌 클래스를 사용하여 정적 메서드를 호출하는 것입니다.
2개의 메서드콜은 같은 메서드를 호출하기 때문에 동작은 동일하지만 스태틱필드 및 메서드에 액세스하기 위해 인스턴스가 아닌 클래스 이름(이 경우 스레드)을 사용하면 이 스태틱네스가 명확해집니다.그것이 이 경고가 생성되는 이유입니다.
그러나 정적 필드와 메서드가 대부분의 IDE에서 특정 방식으로 표시된다는 점을 고려할 때(예를 들어 이클립스 및 IntelliJ IDEA에서는 이탤릭체로 표시됨) 이 경고가 여전히 필요한가?Java 초기처럼 단순 편집기가 사용되던 시절에는 그다지 필요하지 않았을 수도 있습니다.
Thread.currentThread().sleep(x);
이클립스의 말투도 그렇고Thread.sleep(x);
필요한 경우 정적 컨텍스트가 필요하기 때문에 이 sleep에서는 약간의 지연을 기다립니다.
하나의 오브젝트에 의해 설정된 정적 패러다임은 특정 오브젝트 힙 프린트의 라이프 사이클에만 영향을 줍니다.다시 말씀드리지만 전체적인 오브젝트 라이프 사이클 정적인 것은 코딩을 용이하게 하기 위해 사용될 수 있지만 정적 풋 프린트가 참조될 때 신중하게 수행되어야 합니다.Class
예:-)Class.forName(pkg.className)
)입니다.object
내의 런타임 단일 입니다.HEAP
★★★★★★ 。
오브젝트 사용법에도 Weak, Phantom, Strong 종류의 참조에 의한 장단점이 있습니다.
코드는 자연에 의해 난해하다.이것이 바로 우리가 그것을 기능시키기 위한 방법일 뿐입니다.
언급URL : https://stackoverflow.com/questions/2077216/java-thread-currentthread-sleepx-vs-thread-sleepx
'programing' 카테고리의 다른 글
"SELECT UNION SELECT" 쿼리를 정렬 기준으로 독립 오더로 지정하시겠습니까? (0) | 2022.10.29 |
---|---|
shell 명령을 사용하여 mysql 데이터베이스를 삭제하는 방법 (0) | 2022.10.28 |
Javascript 배열에 지정된 값과 동일한 속성을 가진 개체가 포함되어 있는지 확인하는 방법은 무엇입니까? (0) | 2022.10.28 |
더블을 문자열로 변환하는 중 (0) | 2022.10.28 |
오류! MySQL 관리자 또는 서버 PID 파일을 찾을 수 없습니다!QNAP (0) | 2022.10.28 |