thread的基本

1. 进程:

程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的
一次执行过程,它是一个动态的概念。进程是一个具有一定独立功能的程序,一个实体,每一个进程都有它自己的地址空间

case:

      linux:ps -ef

      window:任务管理器

2. 进程的状态

进程执行时的间断性,决定了进程可能具有多种状态。事实上,运行中的进程具有以下三种基本状态。 粗体 1)就绪状态(Ready) 2)运行状态(Running) 3)阻塞状态(Blocked)

线程

线程实际上是在进程基础之上的进一步划分,一个进程启动之后,里面的若干程序又可以划分成若干个线程。
是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个线程(单线程程序)

Java 中最少有两个线程 main gc 垃圾回收器 一个程序可以同时执行多个任务,来提高效率。 例如:

(1)、同时下载多个电影
(2)、同时与多人聊天

并行:就是两个任务同时运行(多个CPU) 并发:是指两个任务同时请求运行,而处理器一次只能接受一个任务,就会把两个任务安排轮流执行,由于CP时 间片运行时间较短,就会感觉两个任务在同时执行

3. 程序运行原理

分时调度

所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。

抢占式调度

优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。
​
实际上,CPU(中央处理器)使用抢占式调度模式在多个线程间进行着高速的切换。对于CPU的一个核而言,某个时刻,只能执行一个线程,而 CPU的在多个线程间切换速度相对我们的感觉要快,看上去就是在同一时刻运行。
其实,多线程程序并不能提高程序的运行速度,但能够提高程序运行效率,让CPU的使用率更高。
  • sleep:让线程进入休眠状态,让出CPU的时间片,不释放对象监视器的所有权(对象锁)

  • wait: 让线程进入等待状态,让出CPU的时间片,并释放对象监视器的所有权,等待其它线程通过notify方法来唤醒

4. thread的方法

静态的属性:

          Static int  MAX_PRIORITY  10
          Static int  MIN_  PRIORITY  1
          Static int  NORM_PRIORITY  5

构造方法: Thread()         Thread(String name)           

多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动

currrntThread().getName() 获取当前的线程的名字

5. 继承Thread类原理

Thread 类不是抽象类,具有开启线程的功能,不能直接去new ,没有线程的任务,而是要继承它,重写run(), 添加线程的任务. 建立了程序单独执行的路径,让多部分代码实现同时执行.并发

   5.1创建线程方式—实现Runnable接口

Thread(Runnable target) 
          分配新的 Thread 对象。
Thread(Runnable target, String name) 
          分配新的 Thread 对象。
实现runnable接口的好处:
避免Thread单继承的局限
将线程和任务进行分离,解耦

猜你喜欢

转载自blog.csdn.net/qq_26594041/article/details/88607874