• 07-死锁问题


    1.死锁的理解:
      不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁。


    2.说明:
      * 1出现死锁后,不会出现异常,不会出现提示,只是所的线程都处于阻塞状态,无法继续。
      * 2我们使用同步时,要避免出现死锁。

    3. 举例

     1 public static void main(String[] args) {
     2 
     3     StringBuffer s1 = new StringBuffer();
     4     StringBuffer s2 = new StringBuffer();
     5 
     6     new Thread(){
     7         @Override
     8         public void run() {
     9 
    10             synchronized (s1){
    11 
    12                 s1.append("a");
    13                 s2.append("1");
    14 
    15                 try {
    16                     Thread.sleep(100);
    17                 } catch (InterruptedException e) {
    18                     e.printStackTrace();
    19                 }
    20 
    21 22 synchronized (s2){ 23 s1.append("b"); 24 s2.append("2"); 25 26 System.out.println(s1); 27 System.out.println(s2); 28 } 29 30 31 } 32 33 } 34 }.start(); 35 36 37 new Thread(new Runnable() { 38 @Override 39 public void run() { 40 synchronized (s2){ 41 42 s1.append("c"); 43 s2.append("3"); 44 45 try { 46 Thread.sleep(100); 47 } catch (InterruptedException e) { 48 e.printStackTrace(); 49 } 50 51 synchronized (s1){ 52 s1.append("d"); 53 s2.append("4"); 54 55 System.out.println(s1); 56 System.out.println(s2); 57 } 58 } 59 60 } 61 }).start(); 62 }
  • 相关阅读:
    系统环境变量
    Shell入门(三)之字符串
    Shell入门(二)之变量
    Shell入门(一)之简介
    Spring入门(三)之IoC
    Spring入门(二)之下载与安装
    Spring入门(一)之简介
    面向对象与面向过程
    Hadoop入门(二)集群安装
    Hadoop入门(一)概念与单机安装
  • 原文地址:https://www.cnblogs.com/shici/p/13415278.html
Copyright © 2020-2023  润新知