线程睡眠

简介: Thread.sleep方法会导致当前线程暂停执行一段指定的时间...

Thread.sleep方法会导致当前线程暂停执行一段指定的时间。并会释放处理器给其它应用程序或线程。但是不会释放任何监视器(锁)的所有权。


模拟单核

测试:

publicstaticvoidmain(String[] args) {
// 锁对象Objectmonitor=newObject();
// Thread1newThread(() -> {
System.out.println(Thread.currentThread().getName() +"开始执行");
// 同步块synchronized (monitor) {
for (inti=0; i<5; i++) {
if (i==3) {
System.out.println(Thread.currentThread().getName() +"已暂停");
try {
// 线程睡眠Thread.sleep(1);
                    } catch (InterruptedExceptione) {
e.printStackTrace();
                    }
                }
System.out.println(Thread.currentThread().getName() +":"+i);
            }
System.out.println(Thread.currentThread().getName() +"执行完毕");
        }
    }, "Thread1").start();
// Thread2newThread(() -> {
System.out.println(Thread.currentThread().getName() +"开始执行");
// 同步块synchronized (monitor) {
for (inti=0; i<5; i++) {
System.out.println(Thread.currentThread().getName() +":"+i);
            }
System.out.println(Thread.currentThread().getName() +"执行完毕");
        }
    }, "Thread2").start();
// 防止所有线程执行完毕,睡眠中的线程没有被唤醒,造成Java进程被关闭// Thread.activeCount():当前活动线程// 默认线程:main线程、CG线程while (Thread.activeCount() >2) {
    }
}
Thread1开始执行Thread1:0Thread1:1Thread1:2Thread1已暂停//线程睡眠Thread2开始执行//Thread1让出cpu,Thread2获取cpu时间,但是并未执行同步块中的代码Thread1:3Thread1:4Thread1执行完毕Thread2:0Thread2:1Thread2:2Thread2:3Thread2:4Thread2执行完毕
相关文章
|
3天前
线程18
线程18
21 4
|
4天前
|
安全 Java
线程(二)
线程(二)
|
4天前
|
监控 安全 Java
线程(一)
线程(一)
|
3月前
|
NoSQL Java 应用服务中间件
线程不够用怎么办?
### 并发编程挑战与解决方案概览 - 多线程导致线程爆炸,浪费CPU及可能导致JVM崩溃。线程池缓解问题,但仍有阻塞IO的效率低下。 - 非阻塞IO(如servlet3.1/Tomcat)和事件驱动(Reactive/Future)减少线程使用,但学习曲线陡峭。 - 轻量级线程如Netty、Spring Flux和虚拟线程(Java Loom)提升性能,但普及尚需时日。Java21引入虚拟线程,有望成未来性能关键。
169 10
|
4月前
|
存储 安全 Java
C++线程浅谈
C++线程浅谈
|
算法 安全 程序员
线程小练习
线程小练习
|
Java Linux 调度
03.关于线程你必须知道的8个问题(中)
大家好,我是王有志,欢迎来到《Java面试都问啥?》。我们书接上回,继续聊Java面试中关于线程的问题。
65 1
03.关于线程你必须知道的8个问题(中)
|
算法 NoSQL Java
02.关于线程你必须知道的8个问题(上)
大家好,我是王有志,欢迎来到《Java面试都问啥?》。 今天我们来一起看看在面试中,关于线程各大公司大都喜欢问哪些问题。
94 1
02.关于线程你必须知道的8个问题(上)
|
Java
什么是线程
什么是线程
129 0