java吧 关注:1,238,660贴子:12,711,539
  • 26回复贴,共1

问下大神们,多线程里的子线程run下用while(true)的问题

只看楼主收藏回复



子线程run下用while(true),应该是无限循环,理论上不是应该第一个进去的线程永远执行下去,直到结束吗?


IP属地:黑龙江1楼2015-08-17 10:46回复
    运行和执行是两码事


    IP属地:广东2楼2015-08-17 11:03
    收起回复
      求教。。。。。。。


      IP属地:黑龙江3楼2015-08-17 11:35
      收起回复
        就好像你电脑能开qq同时能开游览器,cpu不可能永远处理qq的东西直到你把qq关了吧


        IP属地:新加坡4楼2015-08-17 11:58
        收起回复
          你这是死循环,跳不出去


          来自iPhone客户端5楼2015-08-17 12:03
          收起回复
            照你的理解多线程的意义在哪?


            来自Android客户端6楼2015-08-17 12:27
            收起回复
              第一个程序永远执行下去,那还能叫多线程?


              IP属地:宁夏7楼2015-08-17 12:41
              回复
                多线程就是多个任务"同时"处理,启动一个线程,那个while true只会把那一个线程占着,但不影响其他线程,其他线程照样可以运行。


                青铜星玩家
                百度移动游戏玩家均可认证(限百度账号),去领取
                活动截止:2100-01-01
                去徽章馆》
                IP属地:湖北8楼2015-08-17 12:41
                收起回复
                  首先,创建成功的线程并不是一创建成功就能够直接运行的,刚创建的线程默认处于就绪状态,需要等待cpu为它分配资源才能够进入运行状态。而cpu的调度方式是将时间分成细小的时间片,比如将一秒钟分成一百份,然后将其中的一份分配给处于就绪状态的线程当中的某一个,这个得到时间片的线程就可以在这段时间内利用cpu去执行他的操作,也就是进入运行状态,分配到的时间一结束,他就要把cpu资源让给下一个分配到时间片的线程,重新回到就绪状态。而cpu为线程分配时间片是随机的,这就是cpu的调度。当然,具体的调度肯定比这更复杂。建议楼主了解一下线程的生命周期和cpu调度


                  IP属地:福建来自Android客户端9楼2015-08-17 12:42
                  收起回复
                    要是真是这样线程还有卵用啊


                    IP属地:北京来自Android客户端10楼2015-08-17 17:31
                    回复