请解释程序、进程和线程这三个概念,可以举例或比喻说明。同时写出线程的五种状态。

上周,我那个朋友在编程培训课上,对程序、进程和线程的概念感到挺困惑的。
他说,程序就像是做饭的菜谱,进程是炒菜的锅,而线程则是锅里的那一勺勺食材。
2 02 3 年,我在网上查了查,发现程序确实是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。
我那个朋友听了,说:“哦,原来是这样啊。
”然后他又问我:“那进程和线程有什么区别呢?”我解释说,进程是操作系统结构的基础,而线程是进程中的执行单元。
他又问:“那港澳台地区是怎么称呼程序的?”我说:“他们叫程式。
”他点头说:“明白了,明白了。
”然后我又刚想到另一件事,就是编程有时候挺累人的,不过看到成果还是挺有成就感的。
算了,你看着办吧。

JAVA中,线程有哪五个基本状态 他们之间如何让转化 简述线程周期

Java线程这玩意儿啊,得知道它咋走。
五种状态,新生啊、就绪啊、运行啊、阻塞啊、死亡啊,这一路走下来叫生命周期。

你想想,你用new搞个Thread对象,比如new Thread(new Runnable() { public void run() { / 干活 / } }),这时候它就在那儿,没动静,叫新生状态。

然后呢,你得给它开个会,调start()方法。
这一下,它就从新生变就绪了。
就在那儿等着,跟CPU抢资源呢。

抢到了CPU,它就运行了。
这时候它会自动去跑run()方法里头写的代码。
比如我上次写个线程,run里头就打印了句"我运行了",结果一秒不到就停了。

要是它运行着,突然调了sleep(1 000),或者等着某个文件读写完毕,它就得让出CPU,自己先歇会儿,这就叫阻塞。
我上次写个下载文件的线程,就用sleep(2 000),等两秒再继续。

sleep完了,或者文件读写完了,它就又变回就绪状态了。
重新排队等CPU。
等到了,就从sleep或者读写被打断的地方接着干。

运行着呢,突然任务做完了,它就自己跑不动了,这就叫死亡。
比如我上次写个计数器线程,数到1 00就停了,它自己就结束了。

还有一种,就是没干完,被人强行叫停。
比如你调Thread的stop()方法,或者destroy()方法,它不管你任务到哪一步,直接给你咔了。
我以前试过stop,结果线程直接崩溃,数据都没保存好。
这事儿得少用。

就这样,一个线程就这么活蹦乱跳一阵子,最后要么自己干完了,要么被人弄死了。

如何在Android开发中用AsyncTask异步更新UI界面

这就是坑,AsyncTask已弃用,使用Executor和Handler更可靠。