多线程死锁代码

标签: Java 多线程
402人阅读 评论(0) 收藏 举报
分类:

死锁

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

代码实战:

/**
 * Created by FireLang on 2017-07-18.
 */
public class DieThread extends Thread{
    /**
     * 定义两把锁
     */
    private String lock1 = "Lock1";
    private String lock2 = "Lock2";

    /**
     * 运行if 或 else 代码
     */
    private boolean flag = true;

    public DieThread(boolean flag){
        //初始化 flag 的值,让它执行 if 或 else 代码
        this.flag = flag;
    }
    /**
     * 书写死锁代码
     */
    @Override
    public void run() {
        if(flag){
            synchronized (lock1){
                System.out.println("进入 IF LOCK1 !!!!!");
                synchronized (lock2){
                    System.out.println("进入 IF LOCK2 !!!!!");
                }
            }
        }else{
            synchronized (lock2){
                System.out.println("进入 ELSE LOCK2 !!!!!");
                synchronized (lock1){
                    System.out.println("进入 ELSE LOCK1 !!!!!");
                }
            }
        }
    }

    /**
     * 测试代码
     * @param args
     */
    public static void main(String[] args) {
        DieThread d1 = new DieThread(true);
        DieThread d2 = new DieThread(false);

        d1.start();
        d2.start();
    }
}
查看评论

Delphi中用于读写(I/O)的三种文件类型

Delphi中用于读写(I/O)的三种文件类型一.旧pascal文件类型    用旧文件变量表示的文件类型,比如 F:text,F:File. 定义了三类:有类型,无类型,字符类型以及一些Delphi...
  • meiys
  • meiys
  • 2000-12-12 14:03:00
  • 651

多线程 —— 死锁代码展示

死锁的意思其实就是相互等待。一个生活中的简单例子:我们去包子铺吃包子。客户坚持:先吃包子,后付钱。 卖家坚持:先付钱以后,才能吃包子。两边如果都坚持自己的原则,对于客户买包子,卖家卖包子赚钱这件事都...
  • lw_power
  • lw_power
  • 2016-07-24 10:35:39
  • 3055

多线程编程(一):死锁+示例代码

什么是死锁: 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相...
  • seesun2012
  • seesun2012
  • 2018-04-01 12:20:18
  • 53

多线程编程(一)——写一个简单的死锁

(整个九月忙着找工作,好多收获,好多遗憾,最终结局还可以接受,技术路还很远,再接再厉!面去哪儿网时,写惯了算法的我突然让写了几个多线程编程,有点蒙蔽,最近好好整理一下) 死锁发生的原因: 1、系统资源...
  • zhangliangzi
  • zhangliangzi
  • 2016-10-03 19:11:50
  • 4304

多线程死锁及解决办法

死锁是由于不同线程按照不同顺序进行加锁而造成的。如: 线程A:对lock a加锁 => 对lock b加锁 => dosth => 释放lock b => 释放lock a 线程B:对...
  • zgaoq
  • zgaoq
  • 2017-05-18 17:22:12
  • 1567

多线程死锁代码

死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称...
  • Marvel__Dead
  • Marvel__Dead
  • 2017-07-18 01:56:15
  • 402

多线程死锁

/* 死锁:二个线程同时锁住一个变量时。 锁住一个变量之后,尽快操作完成解锁,解锁之前不要再锁住其它变量,否则会互锁(死锁)。 */ /* 注意死锁是因为二个函数的加锁与解锁的顺序有关...如下面...
  • liuguangsh
  • liuguangsh
  • 2016-10-19 16:39:28
  • 99

多线程与死锁

死锁    死锁发生的情况:创建两个字节数组LockA和LockB,再创建两个线程A和B,让每个线程都用synchronized锁住字节数组(A先锁LockA,再尝试去锁定LockB;B先锁LockB...
  • flyawayl
  • flyawayl
  • 2017-08-19 19:03:24
  • 113

多线程死锁例子

一.例子  两个资源对象o1,o2,两个线程t1,t2。 设置t1的初始条件为真,线程启动后。t1获取o1锁,然后等待o2。然后获取o2锁,然后释放o2锁。接着释放o1锁。程序结束 设置t2的初...
  • u010915032
  • u010915032
  • 2016-07-28 23:51:11
  • 1230

多线程造成死锁的例子

1、假设有如下代码    pthread_mutex_t mutex;   //代表一个全局互斥对象    void  A()       {           mutex.lock(); ...
  • fycy2010
  • fycy2010
  • 2015-08-13 22:51:09
  • 1458
    个人资料
    持之以恒
    等级:
    访问量: 40万+
    积分: 7077
    排名: 4027
    最新评论