美文网首页
线程的同步和死锁3

线程的同步和死锁3

作者: 秋笙fine | 来源:发表于2019-01-24 23:55 被阅读0次

本篇是为了线程的死锁情况。
其实我们可以发现,所谓的同步就是一个线程对象等待另外一个线程对象执行完毕后的操作形式。

线程通过过多就可能造成死锁。下面编写一个程序,目的是为了了解死锁,没有任何意义。
下面是A。B分别要用笔与本交换,A,B都要收到笔/本才会交换本/笔

package TestDemo;



class A{
    public synchronized void say(B b){
        System.out.println("book needs");
    }
    public synchronized void get(){
        System.out.println("book has been got");
    }
}

class B{
    public synchronized void say(A a){
        System.out.println("pen needs");
        a.get();
    }
    public synchronized void get(){
        System.out.println("pen has been got");
    }
}

public class TestDemo implements Runnable{
    public static A a=new A();
    public static B b=new B();
    public static void main(String[] args)throws Exception{
        new TestDemo();


    }

    public TestDemo(){
        new Thread(this).start();
        b.say(a);
    }

    @Override
    public void run() {
        a.say(b);
    }
    
}

发现程序会一直执行,造成了死锁,但是如果又一方解锁,就会解锁。

以上的代码只是为了说明死锁,并无任何实际意义。
死锁是程序开发之中,由于某种逻辑上的错误所造成的问题,并且不是简单的就会出现的。

面试题:请解释多个线程访问同一资源时需要考虑到哪些情况,哪些问题。

1.多个线程访问同一资源时一定要处理好同步,可以使用同步代码块或者同步方法

1.1同步代码块:synchronized(锁定对象){}
1.2同步方法: public synchronized 返回值 方法名称(){}

2.但是过多的同步,可能会造成死锁

相关文章

  • 线程的同步和死锁3

    本篇是为了线程的死锁情况。其实我们可以发现,所谓的同步就是一个线程对象等待另外一个线程对象执行完毕后的操作形式。 ...

  • GCD

    1、同步串行队列 2、同步并行队列 3、异步串行队列 4、异步并行队列 5、死锁 主线程中创建同步串行队列 主线程...

  • 并发 :线程间同步、锁、可重入锁及互斥锁

    线程间同步 线程间同步涉及线程互斥锁; 锁(Lock)容易导致死锁,可重入锁(RLock)则不会导致死锁,但每次 ...

  • 线程同步和线程死锁

    1.线程同步,一个关键字:synchronized 为什么有这个东西呢,假如有一个对象,里面有成员变量和方法,如果...

  • GCD学习总结

    串行同步会造成死锁 执行顺序 :1 5 2 4 3 异步不阻塞线程

  • GCD分析(中)

    同步函数死锁 死锁现象 主线程因为同步函数的原因等着先执⾏任务 主队列等着主线程的任务执⾏完毕再执⾏⾃⼰的任务 主...

  • Synchronized关键字详解2(对非object持锁)

    4.死锁:同步方法容易造成死锁。Java线程死锁是一个经典的多线程问题,因为不同的线程都在等待根本不可能被释放的锁...

  • 关于主线程执行同步任务造成死锁的思考

    经典问题重现 bug 粘贴主线程+同步造成死锁 要想明白,为什么造成死锁,首先要搞懂主线程是干嘛的 主线程程序运行...

  • GCD的使用

    1.同步 主线程 串行 死锁 2.异步 主线程 3.线程通信 4.延迟执行 5.组 6. 栅栏方法 dispatc...

  • IOS开发-主线程同步执行死锁问题

    用过GCD的朋友都知道,直接调用主线程同步执行会死锁,那主线程同步执行创建出来有什么用?代码如下:主线程和主队列的...

网友评论

      本文标题:线程的同步和死锁3

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