猿问

Thread.sleep() 的疑问

class Run implements Runnable{
@Override
public void run() {
try {
System.out.println(Thread.currentThread().getName() + " begin...");
Thread.sleep(1000*20);
System.out.println(Thread.currentThread().getName() + " over...");
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}
public class TestThread {
public static void main(String[] args) {
Run run = new Run();
new Thread(run).start();
new Thread(run).start();
}
}
请问这段代码中 Thread.sleep(1000*20); //线程握住的锁是谁? 是run这个对象?还是谁?


哆啦的时光机
浏览 537回答 3
3回答

元芳怎么了

你的线程类里并没有加锁,所有现在还没有锁的概念

叮当猫咪

这是service中的一个方法://第一次调用该方法quickAppoint()正常,但是 第二次调用,无法执行quickAppoint(),直到第一次调用方法开的线程 结束, 才能继续第二次的调用。@Overridepublic String quickAppoint(String date, String timeSpan, String roomId, String guestId, Integer tagId) throws Exception {....逻辑代码//开线程new Thread(new Runnable() {@Overridepublic void run() {.....try {.....Thread.sleep(end-now);......} catch (InterruptedException e) {e.printStackTrace();}}},"mythread").start();}

潇潇雨雨

线程握住的锁是谁?sleep 有锁吗?
随时随地看视频慕课网APP

相关分类

Java
我要回答