Java面试问题:写一个死锁

开课吧开课吧锤锤2021-02-08 14:47

写一个死锁,觉得这个问题真的很不错,经常说的死锁四个条件,背都能背上,那写一个看看,思想为:定义两个ArrayList,将他们都加上锁A,B,线程1,2,1拿住了锁A ,请求锁B,2拿住了锁B请求锁A,在等待对方释放锁的过程中谁也不让出已获得的锁。

开课吧广场Java面试

public class DeadLock {

    public static void main(String[] args) {

        final List list1 = Arrays.asList(1, 2, 3);

        final List list2 = Arrays.asList(4, 5, 6);

        new Thread(new Runnable() {

            @Override

            public void run() {

                synchronized (list1) {

                    for (Integer i : list1) {

                        System.out.println(i);

                    }

                    try {

                        Thread.sleep(1000);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                    synchronized (list2) {

                        for (Integer i : list2) {

                            System.out.println(i);

                        }

                    }

                }

            }

        }).start();

        new Thread(new Runnable() {

            @Override

            public void run() {

                synchronized (list2) {

                    for (Integer i : list2) {

                        System.out.println(i);

                    }

                    try {

                        Thread.sleep(1000);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                    synchronized (list1) {

                        for (Integer i : list1) {

                            System.out.println(i);

                        }

                    }

                }

            }

        }).start();

    }

}

以上就是小编今天为大家整理发布的Java面试题,希望为正在学习Java语言的的朋友提供有用的面试素材,更多Java面试题尽在开课吧广场Java面试频道!

有用
分享