线程的初步理解

  • 线程的概念:线程是进程的一个实体,是CPU调度和分派的基本单位
  • 线程和进程

    • 一个程序至少有一个进程,一个进程可以拥有多个线程(多线程编程)
    • 进程是指运行中的应用程序,用户每启动一个进程,操作系统就会为该进程分配一个独立的内存空间,而多个线程共享内存
      从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别
  • 线程的实现

    • 构建一个Thread类的子类定义一个线程
    • 实现Runnable接口
Runnable r = () -> { 
         try
         {  
         }
         catch (InterruptedException e)
         {
             //当在一个被阻塞的线程上调用interrput方法时捕获异常
         }
      };
      Thread t = new Thread(r);
      t.start();
  • 线程状态
    • New(被创建)
    • Runnable(可运行)
    • Blocked(被阻塞)
    • Waiting(等待)
    • Timed waiting(计时等待)
    • Terminated(被终止)
  • 被阻塞线程和等待线程
    1. 当一个线程试图获取一个内部的对象锁(非java.util.concurrent库中的锁),而该锁被其他线程持有,则该线程进入阻塞状态
    2. 当一个线程等待另一个线程通知调度器一个条件时,该线程进入等待状态。例如调用:Object.wait()、Thread.join()以及等待Lock或Condition
      共同点:都暂时停止线程的执行, 线程本身不会占用CPU时间片
      区别:调用了sleep方法的线程直接受CPU调度, 而wait则是等待另外的java线程在持有同一个对象锁的同步块/方法中进行notify调用
  • 被终止的线程
    1. 因为run方法正常退出而被终止
    2. 因为一个没有捕获的异常终止了run方法而意外死亡
      特别是,可以调用stop方法杀死一个线程,但已经过时不推荐使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值