已采纳回答 / 知道比不知道好
java的多线程编程自己觉得是一种模拟多线程。所有的线程函数都在一个框架下工作,或者说被框架控制。sleep函数本身就是一个计数器,你可以想象成里面添加了一个while循环。在该循环执行时,当前线程休眠,其他线程运行。当循环结束时,当前线程被唤醒,一旦拥有CPU资源便开始运行。
2018-06-15
已采纳回答 / 地铁时间ee
public class SoldTicketThread implements Runnable { private int ticket = 5; private synchronized void sale() { if (ticket > 0) { System.out.println(Thread.currentThread().getName() + "卖出了一张票,剩余" + (--ticket) + "张票"); try { Thread.sleep(100)...
2016-07-28
已采纳回答 / 内涵Naruto
MyThread mt=new MyThread(); Thread td1=new Thread(mt,"售票口1"); Thread td2=new Thread(mt,"售票口2"); Thread td3=new Thread(mt,"售票口3");说的是火车票,但是要通过实现Runnable接口,这样才能真正意义的使其成为同一资源,如果是继承Thread类,创建三次,就不是同一资源了,变成了15张票,就不算是同一资源了,是各自独立的资源,我是这样理解的
2016-03-25
已采纳回答 / 鸿泽
可能是因为并非窗口1首先获得CPU时间片,而是其他线程。首先是窗口2 ,执行到count--之后,sysout时就被阻塞了。注意此时count=4。然后是窗口1 ,执行了整个run方法 ,此时count=3。然后是窗口3 ,执行了整个run方法 ,此时count=2。此时窗口2恢复,继count--之后执行,输出count=3。然后是窗口3 ,执行了整个run方法 ,此时count=0。当然这种并不一定是这样,因为现在的多核CPU线程是可以同时执行的。
2016-03-12
已采纳回答 / 天启之魂
...........建议你再好好学习一下...这里主线程是指的main函数.......sc只是个对象....只是main线程中的一个代码而已...这里能看到的就两个线程 1个main线程 是主线程 一个是thread 线程. 设置成了守护线程...
2015-12-02
已采纳回答 / 天启之魂
稍微说下 免得你误解 不是每个方法都有一个线程 而是 main函数是程序的入口,你运行java程序的时候就默认开启的是main线程 然后你有额外开启了一个thread0的线程 所以有两个线程罗!
2015-11-22
已采纳回答 / passionfoure
执行线程sleep方法是依然占着cpu的,操作系统认为该当前线程正在运行,不会让出系统资源。执行wait方法是让线程到等待池等待,让出一系列的系统资源,其他线程可以根据调度占用cpu
2015-04-11