Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Linux ps state sl+是什么意思

下面这是一段java代码,
 
public class Z
 {
   public static void main(String[] args)
   {
       new Z();
   }
   private Z()
   {
       Z a1=this;
       Z a2=this;
       synchronized(a1)
 
        {
 
            try
           {
               a2.wait();
               System.out.println("done waiting");
           }
           catch (InterruptedException e)
           {
               System.out.println("InterruptedException");
           }
           catch (Exception e)
           {
               System.out.println("Exception");
           }
           finally
           {
               System.out.println("finally");
           }
       }
       System.out.println("all done");
   }
 
}
  编译后运行
 
java Z
 
没有任何输出,程序也不会结束。ps看了一下状态,发现状态是sl+,
 
在Linux中,状态如下:
 
    D    不可中断   Uninterruptible sleep (usually IO)
   R    正在运行,或在队列中的进程
   S    处于休眠状态
   T    停止或被追踪
   Z    僵尸进程
   W    进入内存交换(从内核2.6开始无效)
   X    死掉的进程
 
    <    高优先级
   N    低优先级
   L    有些页被锁进内存
   s    包含子进程
   +    位于后台的进程组
   l    多线程,克隆线程
根据以上信息,得知其处于休眠状态,多线程,且是后台进程。
 
我们知道Java中,
 
wait():让线程处于等待状态。这时线程会释放锁。并存入到了线程池中。
 notify():通常唤醒线程池中的第一个。
 notifyAll():将线程池中的所有等待线程都唤醒。
 
所以在wait的时候,此线程休眠等待其他线程notify,所以就处于休眠状态了。