Thread.sleep()不释放锁吗?
class DualSynch{
public void f(int flag) {
synchronized (this) {
System.out.println("f()" + flag);
}
}
}
public class Test {
public static void main(String[] args) {
final DualSynch ds = new DualSynch();
new Thread() {
public void run() {
int i = 0;
while(i ++ <2){
ds.f(1);
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
new Thread(){
public void run() {
ds.f(2);
}
}.start();
}
}
既然sleep()不释放锁,为什么这个程序运行结果会出现f(1) f(2) f(1)呢?在线程一sleep时,线程二得到了锁并且调用了f()方法
public void f(int flag) {
synchronized (this) {
System.out.println("f()" + flag);
}
}
}
public class Test {
public static void main(String[] args) {
final DualSynch ds = new DualSynch();
new Thread() {
public void run() {
int i = 0;
while(i ++ <2){
ds.f(1);
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
new Thread(){
public void run() {
ds.f(2);
}
}.start();
}
}
既然sleep()不释放锁,为什么这个程序运行结果会出现f(1) f(2) f(1)呢?在线程一sleep时,线程二得到了锁并且调用了f()方法
...全文
相关推荐
sleep () 和 wait () 有什么区别?
sleep () 用于线程休眠,不释放锁,适用于模拟等待或控制线程执行速度。wait () 用于线程间的协调和通信,会释放锁,只能在同步块或同步方法中使用。
正交拉丁超立方(OLHC)分组与实验设计(DOE)评估的优化Python实现.rar
正交拉丁超立方(OLHC)分组与实验设计(DOE)评估的优化Python实现.rar
Java微服务如何拆解审计日志查询服务
标题:Java微服务如何拆解审计日志查询服务 内容概要:围绕缓存策略、任务调度、回压控制和审计追踪,拆解Java微服务如何拆解审计日志查询服务的实现细节。 xdronline.com xdrea.com 9g.xinmei6.com xinghaohuanbao.com m.xiker66.com
港股十档行情tick数据涵盖逐笔成交与委托,记录每笔买卖价格、成交量及挂单明细 逐笔数据包含成交时间、价格、股数、成交方向,委托数据展示买一至买十、卖一至卖十的价格与数量
港股十档行情tick数据涵盖逐笔成交与委托,记录每笔买卖价格、成交量及挂单明细。逐笔数据包含成交时间、价格、股数、成交方向,委托数据展示买一至买十、卖一至卖十的价格与数量。分钟数据汇总每分钟开盘价、最高价、最低价、收盘价、成交量及成交额。历史行情覆盖近十五年,字段清晰完整,便于回溯分析。 数据源:CMES金融数据库
MO-372A_PQFP-F6_I1p27-R3p8x4p48Z1p1-N5p5C1p24.stp
MO-372A_PQFP-F6_I1p27-R3p8x4p48Z1p1-N5p5C1p24.stp


Java SE
