线程

一、什么是线程?

1、

程序是静止的,只有真正执行的程序,才能被成为进程。

单核CPU在任何时间点上,只能运行一个进程,宏观并行,微观串行。(并发)

多核,(并行),多个进程可以同时执行,宏观并行,微观并行。

2、线程,又称轻量级进程。程序中的一个顺序控制流程,同时也是CPU的基本调度单位。进程由多个线程组成,彼此间完成不同的工作,交替执行,称为多线程。

(并发中还能并发)

  1. 并发原理:CPU分时间片,交替执行,宏观并行,微观串行。
  2. 组成部分:
  1. CPU时间片:操作系统(OS)会为每个线程分配执行时间。
  1. 运行数据:
  • 堆空间:存储线程需使用的对象,多个线程可以共享堆中的对象。(成员变量)
    (一个进程有自己的堆空间,但线程共享一个堆空间)
  • 栈空间:存储线程需要使用的局部变量,每个线程都拥有独立的栈。
    (因为局部变量是从定义行开始到所在的代码快结束。)
  • 方法区:常量池、静态属性
     
  1. 代码:
    实现Runnable接口,实现run方法,Runnable对象:任务对象  new Thread(任务对象)  —>线程对象 。
    继承Thread类 覆盖run方法。
  1. 四种状态
     
  2. 优先级:setPriority(X);   X属于1~10,优先级越高,线程越重要。
  3. 休眠:public static void sleep(long millis)   
  • 当前线程主动休眠millis毫秒,会放弃CPU。
  • 线程中出现异常只能自己处理。原因是:子类抛出的异常不能比父类更宽泛、更多。所以当子类subThread extends Thread 时,父类不抛出异常,则子类也不能抛出异常,只能积极处理。
  1. 放弃:public static void yield()
       当前线程主动放弃时间片,回到就绪状态,竞争下一次时间片。
  2. 结合 public final void join()
       允许其他线程加入到当前线程。
     
     
  3. Thread.currentThread().getName();    返回当前正在执行线程的名字,(一般代码在哪个线程里便是哪个线程)。
  4. 守护线程:public final void setDaemon(boolean on)   被称为守护线程(守护其他线程)
    其他线程结束,则该线程也结束;
    该方法必须在启动线程前调用;
    当所有的线程都是守护线程时,Java虚拟机退出;
    垃圾回收线程是精灵(守护)线程。
     
     
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值