`

马士兵_Java_复习总结---线程[上]

 
阅读更多

============================================

本次笔记结合郝斌老师和马士兵老师的线程部分作总结笔记

============================================

1).程序

        所谓程序,是一个严格有序的指令集合。程序规定了完成某一个任务时,计算机所需做的各种操作,以及这些操作的执行顺序。

 

      单道程序设计环境是指:计算机中除了操作系统之外,只存在一个用户程序,及用户程序独享整个计算机资源

     单道程序的特点:

             1.资源的独占性:任何时候,位于内存中的程序可以使用系统中的一切资源,不可能有其他程序与之竞争。

             2.执行的顺序性:内存中每次只有一个程序,各个程序是按次序执行的,即执行完一个,在执行下一个

             3.结果的再现性:只要执行环境和初始条件相同,重复执行一个程序,获得的结果总是一样的。

 

     多道程序设计是指:计算机中除了操作系统之外,存在多个用户程序,这些程序同时运行

     多道程序设计有如下特点:

             1.间断性:由于资源共享和合作,并发程序间相互制约,造成合作执行间断。

             2.失去封闭性:程序执行收外界影响。

             3.不可再现性:重复执行时,可能得到不同的结果。

 

     程序本身只是一组指令的有续集合,它本身没有任何运行的含义,它只是一个静态的实体。

 

2)进程

       进程的由来:一方面为了保持程序“是一个在时间上严格有序的指令集合,是静态的保存在存储介质上”这个概念的原有含义,另一方面为了刻画多个程序共同运行时呈现出的这些特征,在操作系统上,以“程序”为基础,又引入了“进程”这一个新的概念!

       也即“为了使程序能并发执行,且为了对并发执行的程序加以描述,所以人们引入了进程”。

 

       进程是程序在某个数据集上的执行。是一个动态的实体。

 

 

3)线程

       线程是一个程序内部的顺序控制流。

      线程和进程的区别:

              1.每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有教程的开销。

              2.线程可以看成是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。

             3.多进程:在操作系统中能同时运行多个任务(程序)。

             4.多线程:在同一个应用程序中有多个顺序流通时执行。

 

      多线程的优势:

           编程简单,效率高(能直接共享数据和资源,多进程不能),适用于开发服务程序(如web服务,聊天服务等)。

 

 

4)创建线程

      方法一:

              创建一个集成Thread的类(假定类名为T),并重写Thread中的run()方法

              构造一个A类对象,假定对象名为t

              调用t对象的start()方法[start方法是从Thread类继承过来的]

     

     注意的问题:

             Thread中的start()方法的功能就是创建一个新的线程,并自动调用该线程的run()方法,直接调用run()方法是不会创建一个新的线程的。

             执行一个线程实际上就是执行该线程的run方法的代码。

             执行完 t.start();之后并不表示t所对应的的线程就一定会立即得到执行,t.start();执行完后只是表示t线程具有了可以立即被cpu执行的资格,但由于想抢占cpu执行的线程很多,cpu并不一定会立即去执行t所对应的的线程

             一个Thread对象能且只能代表一个线程,一个Thread对象不能调用两次start() 方法,否则会抛抛出java.lang.lllegalThreadStateException异常。

   

     方法二:

            定义一个实现了Runnable接口的类,假定为R

            创建T类对象a,代码如下

       R r = new R();

            利用 r 构造一个Thread对象tt

       Thread tt = new Thread(r);

            调用tt中的start()方法

       tt.start();

           

   Thread的常用方法

        

 

5).线程状的控制

   状态切换图

 

  线程控制的基本方法图



 

线程优先级

 



 

sleep方法的介绍

 

  • 大小: 38.4 KB
  • 大小: 21.5 KB
  • 大小: 104.7 KB
  • 大小: 104.7 KB
  • 大小: 17.2 KB
  • 大小: 105.2 KB
  • 大小: 70.9 KB
  • 大小: 115.8 KB
  • 大小: 50.4 KB
  • 大小: 65.3 KB
  • 大小: 74 KB
  • 大小: 33.3 KB
  • 大小: 90.7 KB
  • 大小: 21.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics