"Uyku (uzun)" durumuna karşılık gelen Thread örneklerinde yöntem yoktur.
Thread.currentThread(). Sleep (2000); Ancak, derleme uzun bir argüman ile uyku() olarak adlandırılan iş parçacığı üzerinde bir yöntem olduğundan derleme yapar.
Java, bir derleyici zaman hilesi olarak bunu sağlar; böylece, yeni kodlayıcılar, yöntemlerin statik erişimi konusunda kafaları karıştığında bunu çalıştırabilir. bu aslında derleyici karar ne Ancak
şöyledir:
Thread.sleep (2000);
Aşağıdaki kodu da eşdeğerdir:
Konu t = new Konu (yeni Runnable() {public void run() {//} hiçbir şey}); t.sleep (2000);
Bir posterin (John V) işaret ettiği gibi, bu, gerçek iş parçacığı (t) örneğini uyuyamıyor - iş parçacığı nesnesini oluşturan geçerli iş parçacığı uyu.
Uyarı, bir sınıf değişkeninin yöntemini değil, bir sınıfın statik yöntemine eriştiğinizi unutmayın.
Yazmak için uygun kod her zaman Thread.sleep (2000); - karışıklığı ve bu uyarıyı önlemek için bir örnek üzerinden statik yöntemlere asla erişmeyin.
Bir yan not olarak: Java 5'ten beri bir TimeUnits var ve bunlara uyku diyebilirsiniz, benim düşüncemde ne daha fazla okunabilir. Örneğin. ´TimeUnit.SECONDS.sleep (2); ´ –