java多线程—Thread.Join()和Thread.Sleep()

注:
join方法的功能就是使异步执行的线程变成同步执行。也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这个线程一定会执行完。而使用join方法后,直到这个线程退出,程序才会往下执行。

这两天一直在研究Thread的调度,把成果拿出来,大家分享一下!本来昨天想要写这篇文章的,无奈51cto的网站不过,无法写!只有推迟到今天!废话不多说!下面是成果!
   
 thread1.Join()//这样写是告诉大家它不是静态方法
         * 三个重载方法,基本功能相同,都是阻塞掉当前代码运行的线程,只有当thread1线程执行完毕,阻塞掉的线程才重新进入运行状态
         * ①thread1.join(),无参无返回值,如果调用该方法时,thread1终止,则返回,否则,被阻塞的线程就永远阻塞下去
         * ②thread1.join(int) 参数是超时时间(单位ms),返回bool,如果在超时时间内thread1终止,则返回true,同时被阻塞的线程进入运行状态,
         *     否则,返回false,同时被阻塞的线程和thread1都处于运行状态,并且交替执行
         * ③thread1.join(timespan)同②。
         * 
         * 
         *线程中设计join方法的意义(个人理解):实现了线程的顺序执行,而线程的顺序执行就有同步的意义,所以这里也可以看做线程同步的一种方式
         */
        /*thread1.Sleep(time)
           两个重载方法功能相同都是,让当前线程休眠一段时间,时间过后就唤醒,但是唤醒后不一定就重新进行调度,但是sleep一次肯定就要重新进行一次调度
         * sleep的意义就是为了防止优先级高的线程(而又需要花费大量Cpu时间的)长期占有Cpu时间,使得其他的线程出现饿死状态,当然不会真的出现饿死状态
         * 或者是某优先级高的线程不想再未来一段时间内参与cpu竞争也可以调用该方法。
         */


作者:ATually_Miao

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页