zoukankan      html  css  js  c++  java
  • 程序的跨平台性:除了能够运行,还必须保证运行的结果。

    第二种方式:

    Class MyThread  implements Runnable{

      Public  void run(){

      Runnable target=new MyThread();

      Thread t3=new Thread(target);

      Thread.start();//启动线程

    }

    }

    P384:通过接口实现继承

     

    练习:写两个线程:

    ①  输入200个“###”②输入200个“***”

     

    下面为线程中的7中非常重要的状态:(有的书上也只有认为前五种状态:而将“锁池”和“等待队列”都看成是“阻塞”状态的特殊情况:这种认识也是正确的,但是将“锁池”和“等待队列”单独分离出来有利于对程序的理解)

           
       
         
     

     

     

                      ①              ⑴

                     ②                   ⑵

                    ③                        ⑶             run()结束

        Start()

                               OS分配CPU

     
       

     

                            CPU时间片结束

                                 yield()                      o.wait()

                                                等待锁标记

     
       

     

     

                                                     notify()

    注意:图中标记依次为

    ①输入完毕;②wake up③t1退出

    ⑴如等待输入(输入设备进行处理,而CUP不处理),则放入阻塞,直到输入完毕。

    ⑵线程休眠sleep()

    ⑶t1.join()指停止main(),然后在某段时间内将t1加入运行队列,直到t1退出,main()才结束。

    特别注意:①②③与⑴⑵⑶是一一对应的。

     

    进程的休眠:Thread sleep(1000);//括号中以毫秒为单位

    main()运行完毕,即使在结束时时间片还没有用完,CPU也放弃此时间片,继续运行其他程序。

    Try{Thread.sleep(1000);}

    Catch(Exception e){e.printStackTrace(e);}

    T1.join()表示运行线程放弃执行权,进入阻塞状态。

    t1结束时,main()可以重新进入运行状态。

    T1.join实际上是把并发的线程编程并行运行。

    线程的优先级:1-10,越大优先级越高,优先级越高被OS选中的可能性就越大。(不建议使用,因为不同操作系统的优先级并不相同,使得程序不具备跨平台性,这种优先级只是粗略地划分)。

    注:程序的跨平台性:除了能够运行,还必须保证运行的结果。

     

    一个使用yield()就马上交出执行权,回到可运行状态,等待OS的再次调用。

  • 相关阅读:
    1509 加长棒
    51Nod 1158 全是1的最大子矩阵
    P2953 [USACO09OPEN]牛的数字游戏Cow Digit Game
    P3384 【模板】树链剖分
    北京集训DAY3
    北京集训DAY2
    北京集训DAY1
    51Nod 1422 沙拉酱前缀 二分查找
    51Nod 1109 01组成的N的倍数
    51Nod 1043 幸运号码 数位DP
  • 原文地址:https://www.cnblogs.com/borter/p/10744106.html
Copyright © 2011-2022 走看看