Java学习 · 初识 多线程

多线程

1. 基础概念

a)     程序 Program

                  i.           静态代码,指令集,应用程序执行的蓝本

b)    进程 Process

                  i.           动态概念,正在运行的程序,有地址空间,操作系统任务调度

                ii.           特点

  1. 动态性
  2. 并发性
  3. 独立性

c)     线程 Thread

                  i.           在进程内多条执行路径

                ii.           轻量级进程

扫描二维码关注公众号,回复: 2839058 查看本文章

              iii.           一个进程中运行多个线程,完成不同任务,称为多线程

d)   

  1. 2.   线程的创建

a)     继承Thread + 重写run方法

                  i.          

b)    实现Runnable接口 + 实现Run接口

                  i.           使用静态代理

  1. 创建真实角色
  2. 创建代理角色,Thread + 真实角色的引用
  3. 代理角色.start

                ii.           两种区别

              iii.           常用方法

              iv.           另一种实现

  1. 通过Callable接口实现多线程

a)    

b)    思路

                                                 i.           创建 Callable实现类+重写call

                                               ii.           借助 执行调度服务 ExecutorService,获取Future对象

                                              iii.           获取值 result.get()

                                              iv.           停止服务 ser.shutdownNow();

                                                v.          

  1. 线程状态

a)    

b)    停止线程

                  i.           Void interrupt()

  1. 发送中断请求
  2. 如果被Sleep调用阻塞,抛出异常

                ii.           Static Boolean interrupted()

  1. 测试当前线程是否被中断
  2. 副作用:将当前线程的状态重置为false

              iii.           Boolean isInterupte()

  1. 没有副作用

              iv.           Static Thread currentThread()

  1. 返回代表当前执行线程的Thread线程
  1. 同步:并发,多个线程访问同一份资源,确保资源安全  -->线程安全

a)     关键字synchronized

                  i.           同步块 synchronized

                ii.           同步方法 synchronized

  1. 5.   死锁:过多的同步引发

a)     解决:生产者消费者模式

                                          i.       信号灯法

                                        ii.       一、 wait() :等待,释放锁   sleep 不释放锁

                                       iii.       二、notify()/notifyAll():唤醒

              iv.             与 synchronized 一起使用

猜你喜欢

转载自www.cnblogs.com/secoding/p/9497863.html