线程睡眠

简介: 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执行完毕
相关文章
|
8月前
|
Java Linux API
线程的认识
线程的认识
|
4月前
|
监控 安全 Java
线程(一)
线程(一)
|
7月前
|
NoSQL Java 应用服务中间件
线程不够用怎么办?
### 并发编程挑战与解决方案概览 - 多线程导致线程爆炸,浪费CPU及可能导致JVM崩溃。线程池缓解问题,但仍有阻塞IO的效率低下。 - 非阻塞IO(如servlet3.1/Tomcat)和事件驱动(Reactive/Future)减少线程使用,但学习曲线陡峭。 - 轻量级线程如Netty、Spring Flux和虚拟线程(Java Loom)提升性能,但普及尚需时日。Java21引入虚拟线程,有望成未来性能关键。
243 10
|
Java C语言 Python
线程那些事
线程那些事
57 0
|
8月前
|
存储 安全 Java
C++线程浅谈
C++线程浅谈
|
8月前
|
C#
C#线程初步
C#线程初步
42 0
|
Java Linux 程序员
04.关于线程你必须知道的8个问题(下)
大家好,我是王有志。今天是Java面试中线程问题的最后一部分内容,包括我们来聊同步与互斥,线程的本质,调度,死锁以及线程的优缺点等问题。
124 1
04.关于线程你必须知道的8个问题(下)
|
算法 安全 程序员
线程小练习
线程小练习
|
传感器 存储 自动驾驶
(6)线程
(6)线程
119 0
|
Java 调度
线程小记
线程小记
109 0