Java线程的问题(执行次序的疑惑?) 本帖最后由 ltelink 于 2012-06-18 16:13:04 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那么请问在这个程序中,“thread01.start();”语句应该在何时执行?它的作用是什么? 该调用启动线程,调用run方法就就交给新启动的线程来做了,有可能刚启动的线程就得到了CPU时间,于是运行了run方法的部分或全部,也有可能主线程的CPU时间还没用完,主线程继续运行。当然,这里引入的时间片只是一种可能性,具体还得看操作系统或jvm的调度方式,不同的操作系统,不同的jvm实现,其调度方式也可能是不一样的 这么说吧,本来是一个人在做事情,调用一个Thread对象的start后就开始有两个人做事情,但他们做事情都需要一些共享资源(如CPU),他们就会争夺这些资源(由系统调度,由系统分配),谁拿到资源就可以做事情,但是他们之间做的事情是没有任何顺序关系的。经常遇到这样的情况,我启动一个线程后,我的资源还没用完(CPU时间),我会继续做我的事情,另一个人就要等(如果有多个CPU,它们也可能同时得到CPU资源,同时进行)从外界看来,总会呈现一个顺序,比如上面,我的资源没用完,我继续做,假如我做的速度慢(CPU比较慢),可能在当前可用资源使用完后还没做完,我就要等下一次分得资源。如果我做事快且做的事不多,我可能在另一个人开始做之前就把任务全做掉了不再回复了,看《操作系统》吧,或者搜 进程/线程调度 不一样,你不说我还真没有注意,之前运行了好几次,结果的第一行都是“Thread-0 is running!”,所以不明白为什么“main is running!”就不能是第一个结果。那么是否可以按照你说的(包括ticmy)理解,执行结果的第一行完全取决于执行那个瞬间CPU资源分配给哪一个进程,如果刚好分配给main,就得到main is running;若是刚巧给了run(),则是Thread-0 is running? 1楼说有道理,一个线程启动后Start后不一定立即run,这主要根据OS 要看CPU的情况还有线程的调度方法决定的,可以这样理解你发一条信息给你朋友,有两种情况:1.正巧你朋友拿着手机收到信息就回你了,收到他的回复后你可以继续做其他的事情2.你朋友由于比较忙或其他原因未看到你发的信息,你还没收到他发的信息你就接着做其他的事情了,在这时等你朋友有时间看到信息了你发的信息会回复你,这样就会出现在你做其他事情的事情的时候收到他的回复。 不知道现在的描述你可否明白 每日一题7 我被线程给搞晕呢,求助各位大大。。 Java如何调用Windows system32里的dll文件 jtable刷新数据的出现错误,急! 新手关于学习JAVA的问题~~~~~~~~~ 谁有corejava的光盘资料 问一个弱问题,JAVA API和JAVA类库有什么区别和联系? 请问如何将二进制流写成图像文件。 这个问题太简单了,简直是送分!!谢谢了 Bean的属性编辑器有什么用,怎么用?谢谢各位! java动态代理 接口中的方法加和不加abstract有啥区别?(冒着被鄙视风险)
该调用启动线程,调用run方法就就交给新启动的线程来做了,有可能刚启动的线程就得到了CPU时间,于是运行了run方法的部分或全部,也有可能主线程的CPU时间还没用完,主线程继续运行。当然,这里引入的时间片只是一种可能性,具体还得看操作系统或jvm的调度方式,不同的操作系统,不同的jvm实现,其调度方式也可能是不一样的
这么说吧,本来是一个人在做事情,调用一个Thread对象的start后就开始有两个人做事情,但他们做事情都需要一些共享资源(如CPU),他们就会争夺这些资源(由系统调度,由系统分配),谁拿到资源就可以做事情,但是他们之间做的事情是没有任何顺序关系的。经常遇到这样的情况,我启动一个线程后,我的资源还没用完(CPU时间),我会继续做我的事情,另一个人就要等(如果有多个CPU,它们也可能同时得到CPU资源,同时进行)从外界看来,总会呈现一个顺序,比如上面,我的资源没用完,我继续做,假如我做的速度慢(CPU比较慢),可能在当前可用资源使用完后还没做完,我就要等下一次分得资源。如果我做事快且做的事不多,我可能在另一个人开始做之前就把任务全做掉了不再回复了,看《操作系统》吧,或者搜 进程/线程调度
那么是否可以按照你说的(包括ticmy)理解,执行结果的第一行完全取决于执行那个瞬间CPU资源分配给哪一个进程,如果刚好分配给main,就得到main is running;若是刚巧给了run(),则是Thread-0 is running?
1.正巧你朋友拿着手机收到信息就回你了,收到他的回复后你可以继续做其他的事情
2.你朋友由于比较忙或其他原因未看到你发的信息,你还没收到他发的信息你就接着做其他的事情了,在这时等你朋友有时间看到信息了你发的信息会回复你,这样就会出现在你做其他事情的事情的时候收到他的回复。 不知道现在的描述你可否明白