java 多线程

  1. 进程
    操作系统中运行的任务(应用程序)
  2. 线程
    1). 线程是进程中基本的执行单元
    2). 线程是进程中的一个顺序执行流
  3. 并发原理
    1). 操作系统将时间划分成很多个时间片段(时间片),然后尽可能均匀的分配给每一个线程,获得时间片的线程被CPU执行,其他线程则等待,这种微观上走走停停,宏观上都在运行,这种现象称为并发
    2). 并发并不是真正意义上的同时发生
  4. 多线程4种实现方式
    1). 继承 Thread 类
    2). 实现 Runnable 接口
    3). 实现 Callable 接口
    4). 创建匿名内部类
  5. 线程状态转换图(图片来自网络):
    这里写图片描述
    1). java中每个对象都可以作为锁
    2). 线程5种状态: 创建、就绪、运行、阻塞、终止
    3). 阻塞状态分为3种类型: 同步阻塞、等待阻塞、其他阻塞
    1)). 同步阻塞: 比方说 2个线程 访问同步方法: 第一个线程获取锁之后,能够访问同步方法,第二个线程获取不到锁,进入对象的等锁池等待
    2)). 等待阻塞: wait和notify方法使用之前,必须先加锁,也就是wait、notify必须和synchronized一起使用;调用对象的wait方法,当前线程会释放持有的锁,而后进入对象的等待池,只有调用 对象的notify/notifyAll方法才会唤醒对象等待池中的线程进入对象的等锁池
    3)). 其他阻塞: 调用 sleep/join/io操作,具体如 第6点
  6. 线程操作 API
    1). sleep(): 休眠,是 Thread类中静态方法,调用sleep方法,当前线程会让出时间片给其他线程,也就是当前线程暂停执行指定的时间,但是锁并未释放,休眠完后,线程状态变为就绪状态。
    2). wait()/notify()/notifyAll(): 等待,是 Object类中的方法,调用wait方法,当前线程会释放持有的锁,并进入 对象的的等待池,直到调用 对象的notify/notifyAll方法,才会唤醒对象等待池中的线程进入对象等锁池,获得锁的线程状态变为就绪状态。
    3). yield(): 屈服,当前线程让出时间片给 具有相同优先级或者更高优先级的线程
    4). join(): (主线程)等待该线程终止。join(10): 表示主线程最多等待10毫秒
    5). interrupt(): 中断,实际上并不是中断正在运行的线程,而是线程收到阻塞时抛出一个中断信号,这样可以退出阻塞状态;
    stop(): 停止正在运行的线程,但是不安全,已丢弃
    6). 线程优先级(priority): 线程优先级划分为10级,1最低,10最高,默认5,提高线程优先级只是增大线程获取时间片的几率
    7). 守护线程(daemon): 进程中只剩下守护线程时,所有的守护线程都会被强制终止
  7. 线程同步
    1). synchronized: 同步锁、互斥锁,一般加在对象或者方法上,表示对对象或者方法的访问是互斥的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值