美文网首页
串行和并发

串行和并发

作者: Juntech | 来源:发表于2019-09-26 10:43 被阅读0次

    串行和并发

    1、串行

    多任务按照顺序依次执行 ,就好比一条单行道,里面有很多车,只要前车不前进,后面的车始终会被阻塞在那。

    2、并发

    多任务同时进行。 好比一条路有多条道,就可以同时通行多辆车。

    3、进程和线程

    线程安全: 单线程运行结果和多线程运行结果一致,安全,反之,则不安全

    线程创建的方法: ①继承Thread ②实现Runnable 三实现callable接口

    线程创建:Thread thread = new Thread(线程,”name");

    线程开启: thread.start();

    4、线程同步

    1. 同步代码块
    2. 同步方法
    3. 同步锁
    4. volatile
    5. ThreadLocal
    6. LinkedBlockingQueue
    7. 原子操作 Atomic

    4.1同步代码块 synchronized

    1、添加对象: private Object obj = new Object();

    2、加锁(代码块) synchronized (obj) {代码块} 给对象加锁

    4.2 同步方法

    synchronized, 不写static,是使用锁对象

    4.3 同步锁 Reenreantlock

    lock() unlock()

    加同步锁 释放同步锁

    private Lock lock = new Reenreantlock(true);

    true ------------>公平锁 ,多线程公平拥有执行权

    false------------>非公平,独占,默认锁

    加锁方法: lock.lock()

    释放锁: lock.ublock()

    加try代码块在try代码块里加锁,最后在finnally里面释放锁

    注意:lock调用后,要使用unlock释放锁,不然会发生死锁

    5 小结

    ①线程安全小结

    1、synchronized : java关键字,jvm层面,无法获得锁的状态,会自动释放锁,多线程获锁需等待,可重入,不可中断,非公平锁,适用场景为代码少量的同步

    2、lock: java类,可获取锁的状态,需要在finanlly中使用unlock释放锁,容易造成死锁,lock锁在锁占用时会结束,可重入,可判断,可公平,适用场景为大量同步的代码同步问题

    ②死锁

    基本条件: 互斥 不可剥夺 忙等待 请求保持

    死锁处理: 死锁预防 死锁检测 死锁避免 有序资源分配 : 同类资源一次申请完,不同类依次申请 ;银行家算法

    更多详情

    设置为vip可见的都可访问下面链接地址,即可观看原文
    更多详情请访问: juntech

    相关文章

      网友评论

          本文标题:串行和并发

          本文链接:https://www.haomeiwen.com/subject/axxwyctx.html