共计 1208 个字符,预计需要花费 4 分钟才能阅读完成。
线程
正在运行的程序,也就是占用的内存区域
特点:独立性
动态性
并发性
线程
是操作系统可能运行的最小单位,也是过程理论的运作单位,一个过程能够有多个线程,当一个过程只有一个线程时,被称作单线程;当有多个线程时,被称作多线程。
线程
状态:新建 就绪 运行 阻塞 终止
阻塞起因:a 期待阻塞 - 线程处在 wait()办法中
b 同步阻塞 - 线程在获取 synchronized 同步锁失败,进入同步阻塞
c 其它阻塞 - 通过调用线程的 sleep() 或 join() 或收回了 I / O 申请时,线程会进入到阻塞状态。当 sleep() 状态超时、join() 期待线程终止或者超时、或者 I / O 处理完毕时,线程从新转入就绪状态。
线程比拟
线程锁
l Synchronized 互斥锁(乐观锁,有罪假如)采纳 synchronized 修饰符实现的同步机制叫做互斥锁机制,它所取得的锁叫做互斥锁。每个对象都有一个 monitor(锁标记),当线程领有这个锁标记时能力拜访这个资源,没有锁标记便进入锁池。任何一个对象零碎都会为其创立一个互斥锁,这个锁是为了调配给线程的,避免打断原子操作。每个对象的锁只能调配给一个线程,因而叫做互斥锁。2 ReentrantReadWriteLock 读写锁(乐观锁,无罪假如)ReentrantLock 是排他锁,排他锁在同一时刻仅有一个线程能够进行拜访,实际上独占锁是一种绝对比拟激进的锁策略,在这种状况下任何“读 / 读”、“读 / 写”、“写 / 写”操作都不能同时产生,这在肯定水平上升高了吞吐量。然而读操作之间不存在数据竞争问题,如果”读 / 读”操作可能以共享锁的形式进行,那会进一步晋升性能。因而引入了 ReentrantReadWriteLock,顾名思义,ReentrantReadWriteLock 是 Reentrant(可重入)Read(读)Write(写)Lock(锁),咱们上面称它为读写锁。读写锁外部又分为读锁和写锁,读锁能够在没有写锁的时候被多个线程同时持有,写锁是独占的。读锁和写锁拆散从而晋升程序性能,读写锁次要利用于读多写少的场景。
守护线程
守护线程为其主线程提供服务,主线程一旦完结,守护线程也就完结
通过 isDaemon()来判断一个线程是否是否为守护线程
通过 set Daemon()设置线程为守护线程
线程优先级
低优先级:1~4,其中类变量 Thread.MIN_PRORITY 最低,数值为 1;默认优先级:如果一个线程没有指定优先级,默认优先级为 5,由类变量 Thread.NORM_PRORITY 示意;高优先级:6~10,类变量 Thread.MAX_PRORITY 最高,数值为 10。setPriority()设置优先级
并行和并发的区别
线程平安
原子性:提供互斥拜访,同一时刻只能有一个线程对数据进行操作
可见性:一个线程对主内存的批改能够及时地被其余线程看到
有序性:一个线程察看其余线程中的指令执行程序,因为指令重排序,该察看后果个别杂乱无序
正文完