java学习基地

微信扫一扫 分享朋友圈

已有 1052 人浏览分享

线程什么时候取得cpu执行权?

[复制链接]
1052 0
class Ticket implements Runnable
{
        private  int tick = 1000;
        public void run()
        {
                while(true)
                {
                        //synchronized(this)     //减锁
                        //{
                       
                                if(tick>0)
                                {
                                        try{Thread.sleep(100);}catch(Exception e){}
                                        System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);
                                }
                        //}
                }
        }
}
class  TicketDemo
{
        public static void main(String[] args)
        {

                Ticket t = new Ticket();

                Thread t1 = new Thread(t);
                Thread t2 = new Thread(t);
                Thread t3 = new Thread(t);
                Thread t4 = new Thread(t);
                t1.start();
                t2.start();
                t3.start();
                t4.start();
        }
}
图两是减(synchronized)锁的状况下所运转的成果,图三是出有减锁的状况下的运转成果?
我的成绩是:为何图2一个线程会持续挨印那么屡次,而图三是交互挨印呢?一个运转当边程甚么时分会抛却施行权,而让另外一个线程得到cpu的施行权?感谢各人。

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

129

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Archiver|手机版|java学习基地 |网站地图

GMT+8, 2021-9-17 05:44 , Processed in 0.459978 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.