• 锁标记如果过多,就会出现线程等待其他线程释放锁标记


    锁标记如果过多,就会出现线程等待其他线程释放锁标记,而又都不释放自己的锁标记供其他线程运行的状况。就是死锁。

    死锁的问题通过线程间的通信的方式进行解决。

    线程间通信机制实际上也就是协调机制。

    线程间通信使用的空间称之为对象的等待队列,则个队列也是属于对象的空间的。

    Object类中又一个wait(),在运行状态中,线程调用wait(),此时表示着线程将释放自己所有的锁标记,同时进入这个对象的等待队列。

    等待队列的状态也是阻塞状态,只不过线程释放自己的锁标记。

    Notify()

    如果一个线程调用对象的notify(),就是通知对象等待队列的一个线程出列。进入锁池。如果使用notifyall()则通知等待队列中所有的线程出列。

     1 package TomTexts;
     2 import java.io.*;
     3 public class TomTexts_35 {
     4 
     5     public static void main(String args[])
     6     {    byte buffer[]=new byte[128];
     7         System.out.println("请输入数据,回车后保存到文件test.txt");
     8         System.out.println("输入 # 则退出!");
     9         try{
    10             FileOutputStream f=new FileOutputStream("test.txt");
    11             while(true){
    12                 int n=System.in.read(buffer);
    13                 if(buffer[0]=='#' )     break;
    14                 f.write(buffer,0,n-1);
    15                 f.write('
    ');
    16             }
    17             f.close();
    18         }catch(IOException e)
    19             {
    20                 System.out.println(e.toString());
    21             }
    22     }
    23 
    24 }
  • 相关阅读:
    mac 安装Windows系统
    各种镜像源
    应用官方下载地址汇总
    centos7 升级openssh
    ubuntu16.04升级openssh
    腾讯云
    msdeploy 远程发布到lls
    Java Script 什么是闭包?
    JavaScript我的怀疑
    HTML 之 js是干什么的
  • 原文地址:https://www.cnblogs.com/borter/p/9425119.html
Copyright © 2020-2023  润新知