2021-07-05

    1. 线程和进程
      1. 进程:
        1. 当一个程序进入到内存中运行的时候,它就变成了一个进程。进程是处于运行过程当中的程序,并且具有一定的独立功能。进程是系统进行资源分配和调度的一个独立单位。
        2. 进程特点:
          1. 独立性
          2. 动态性
          3. 并发性
            1. 并发和并行
            2. 并行是指在同一时刻,有多条指令在多个处理器上同时执行。
            3. 并发是指在同一时刻,只能有一条指令执行。但是多个进程指令被快速的轮换执行。达到在宏观上具有多个今晨同时执行的效果。
      2. 多线程:
        1. 线程是进程的组成部分,一个进程可以有多个线程。一个线程必须有一个父进程。线程可以拥有自己的堆栈、自己的局部变量等等。但是不拥有系统资源。它和父进程里面的其他的线程共享该进程所拥有的全部资源。
        2. 线程是独立运行的。它并不知道进程中是否还有其他线程。线程的执行是抢占式的。也就是说,当前运行的线程在任何的时候都可能被挂起,以便另一个线程可以运行。
      3. 操作系统可以同时执行多个任务,每个任务就是进程。进程可以同时执行多个任务,每个任务就线程。
      4. 多线程相比多进程的优势:
        1. 1.进程之间不能共享内存,但是线程直接可以,共享内存非常容易。
        2. 2.系统在创建进程的时候,需要为进程重新分配系统资源,但是创建线程的代价就要小的多。
        3. 3.Java语言内置了对于多线程功能的支持。
      1. 继承Thread类创建线程类
      2. 实现Runnable接口创建线程类
      3. 使用Callable和Futrue创建线程

    2. 线程的生命周期
      1. 线程的5种状态
        1. 新建(New)
        2. 就绪(Runnable)
        3. 运行(Running)
          1. 线程从运行进入阻塞状态情况:
            1. 1.调用sleep方法,线程主动放弃所占用的处理器资源
            2. 2.调用了阻塞式IO方法,这个方法返回之前,线程会被阻塞
            3. 3.线程试图获取一个同步监视器,但是这个同步监视器正在被其他的线程所持有。
            4. 4.线程在等待某个通知。
            5. 5.程序调用了线程的挂起方法,把线程挂起。
        4. 阻塞(Blocked)
          1. 让线程从阻塞转换到就绪状态的几种情况:
            1. 1.调用sleep方法的线程经过了指定的时间
            2. 2.调用的阻塞式IO已经返回
            3. 3.成功获取到了同步监视器
            4. 4.在等待某个通知的时候,其他线程发出了通知
            5. 5.被挂起线程,被调用了恢复方法。
        5. 死亡(Dead)
          1. 1.run方法或call方法执行结束,线程会正常结束
          2. 2.线程抛出一个未捕获的Exception或Error
          3. 3.直接调用stop方法结束该线程。这种方式容易造成死锁,不建议使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值