百科狗-知识改变命运!
--

Linux里面ll和ls -al区别是什么?

泡在奶味里1年前 (2023-12-23)阅读数 10#综合百科
文章标签线程状态

两者都会以列表的形式显示目录下的文件名,但ll不显示隐藏文件,ls -al命令会显示隐藏文件。

ll是别名,通过alias命令,可看出其原形是“ls -l --color=auto”,选项-l的意思是以列表的形式呈现;而ls -al命令,则还有个-a选项,意思是还会显示隐藏文件。

运行效果与手册内容

参考资料:

ls的man手册

一、线程5种状态

新建状态(New) 新创建了一个线程对象。

就绪状态(Runnable) 线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。

运行状态(Running) 就绪状态的线程获取了CPU,执行程序代码。

阻塞状态(Blocked) 阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:

等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。

同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。

其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

二、Jstack中常见的线程状态

应用程序启动后,我们对系统运行状况的观测大部分情况下是通过运行日志。但是若某一天发现,日志中记录的行为与预想的不一致,此时需要进一步的系统监控该怎么办,Jstack是常用的排查工具,它能输出在某一个时间,Java进程中所有线程的状态,很多时候这些状态信息能给我们的排查工作带来有用的线索。?

Jstack的输出中,Java线程状态主要是以下几种:

RUNNABLE?线程运行中或I/O等待

BLOCKED?线程在等待monitor锁(synchronized关键字)

TIMED_WAITING?线程在等待唤醒,但设置了时限

WAITING?线程在无限等待唤醒

1) 让线程一直处于RUNNABLE

public?static?void?runnable()?{

long?i?=?0;

while?(true)?{

i++;

}

}

2) 让线程一直处于BLOCKED

public?static?void?blocked()?{

final?Object?lock?=?new?Object();

new?Thread()?{

public?void?run()?{

synchronized?(lock)?{

System.out.println("i?got?lock,?but?don't?release");

try?{

Thread.sleep(1000L?*?1000);

}?catch?(InterruptedException?e)?{

}

}

}

}.start();

try?{?Thread.sleep(100);?}?catch?(InterruptedException?e)?{}

synchronized?(lock)?{

try?{

Thread.sleep(30?*?1000);

}?catch?(InterruptedException?e)?{

}

}

}

主线程sleep,先让另外一个线程拿到lock,并长期持有lock(sleep会持有锁,wait不会)。此时主线程会BLOCK住等待lock被释放,此时jstack的输出可以看到main线程状态是BLOCKED。这里要注意的是只有synchronized这种方式的锁(monitor锁)才会让线程出现BLOCKED状态,等待ReentrantLock则不会。

3)?让线程处于TIMED_WAITING状态

public?static?void?timedWaiting()?{

Linux里面ll和ls -al区别是什么?

final?Object?lock?=?new?Object();

synchronized?(lock)?{

try?{

lock.wait(30?*?1000);

}?catch?(InterruptedException?e)?{

}

}

}

4)让线程处于WAITING状态

public?static?void?waiting()?{

final?Object?lock?=?new?Object();

synchronized?(lock)?{

try?{

lock.wait();

}?catch?(InterruptedException?e)?{

}

}

}

无超时的等待,必须等待lock.notify()或lock.notifyAll()或接收到interrupt信号才能退出等待状态。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)