java的多线程编程自己觉得是一种模拟多线程。所有的线程函数都在一个框架下工作,或者说被框架控制。sleep函数本身就是一个计数器,你可以想象成里面添加了一个while循环。在该循环执行时,当前线程休眠,其他线程运行。当循环结束时,当前线程被唤醒,一旦拥有CPU资源便开始运行。
CPU是执行指令是分时的,每个线程是一系列指令的集合,所以有几个线程无所谓,具体执行,每个时间片还是一个具体指令
sleep不会释放对象锁,但是让出了cpu给其他线程。
这里的阻塞不是由于调用了SLEEP方法,而是窗口3抢先获取CPU服务,造成窗口1阻塞了,也就是谁先抢到是谁的,后来的排队等着
执行线程sleep方法是依然占着cpu的,操作系统认为该当前线程正在运行,不会让出系统资源。
执行wait方法是让线程到等待池等待,让出一系列的系统资源,其他线程可以根据调度占用cpu
这个。。。。你要补下操作系统的知识了,很基础的东西