线程和进程有什么区别

说实话,说到进程和线程,首先得解释一下我刚接触操作系统类时的困惑。
老师讲得太多,让我对“并发执行单元”和“资源分配的基本概念”感到困惑。
后来我找了一个简单的例子来自娱自乐——假设有一个程序叫“写作业”,加载到内存中准备启动,哦,这就成了一个过程了。

有趣的是,这个“写作业”的过程可以同时分成几个小任务:比如一边写一边查资料,另一边同时查字典。
这些小任务在计算机中称为线程。
当时我不明白为什么它被称为“线”,但后来我发现它的作用就像纺织线一样。
这组线程的一大优点是它们都生活在同一个进程的同一个大房子里——共享内存和资源。
例如,“写作业”过程中的所有主题都可以使用同一个搜索数据库,这样可以节省大量工作。

说到这里,不得不提一个具体的场景。
我写研究生论文的时候,用Python做数据分析和页面展示,电脑都快烧坏了。
后来我改用多线程,实际上快了三倍。
这正是书上所说的,线程是“轻量级进程”。
建设和维护成本本来就低,操作系统负担也轻。
我查了资料,发现创建进程可能需要重新复制整个地址空间,但是线程化就容易多了。
就像拖动一个抽屉一样,只需在进程空间中创建一个新的堆栈部分即可。

但是,共享资源也存在风险。
记得用Java写并发程序时,两个线程同时改变同一个变量,导致数据混乱。
这就是为什么我们需要学习线程同步机制。
说实话,一开始我很害怕输入错误的synchronized关键字,生怕程序挂掉。
以后只要多练习就会更好,就像开车前练习把车倒进仓库一样。

毕竟进程和线程就像父子关系。
该经营是大型联排别墅,子经营是四处走动的租户;但主角是住在房子里的所有家庭成员,共用厨房和客厅,但每个人都有一间卧室他自己的。
然而,线程比子进程更自由。
理论上,同一进程中的任何线程都可以控制其他线程,甚至是主线程。
我见过最离谱的就是一个老大爷写了一个线程自杀程序,直接杀掉了主线程——结果整个流程都跟着GG了。
这个过程现在看来很危险,但当时确实让我震惊。

我记得的数据是,在Windows中创建进程大约需要几秒钟,但线程可以在毫秒内执行。
您可能需要检查最新的操作系统概念版本以获取具体数字,但这就是趋势。
Linux 可能更加私密,有 System V IPC 和 POSIX Threads 等很酷的东西。
我自己从来没有跑过这个领域,所以不敢撒谎。

最后,我们来谈谈他们的共同点。
进程和线程都有标识符,就像ID号一样;必须在系统发送的“信息块”中注册;他们可以改变优先级并占用 CPU 时间。
但最令人惊讶的是,它们可以与父进程(父进程)共享资源,但它们永远不能直接接触其他进程或线程。
这就像一个住在校园里的学生。
他可以在家里使用锅碗瓢盆,但在隔壁班他不能碰同学的物品。

3、进程和线程的概念是什么,二者有何区别。列举线程同步的几种方法,其内部原理都是什么

陈述1 :正确。
进程是资源分配的单位。
线程是CPU的调度单位。
线程共享处理资源。
线程可以创建和撤消线程。
并发执行取决于线程。

主张 2 :部分正确。
进程有独立的内存。
线程共享内存。
线程在应用程序中运行。
线程不是独立的应用程序。
并发取决于线程。
操作系统不调度线程。

断言3 :部分正确。
多线程是一项应用程序功能。
进程有独立的内存。
线程共享内存。
线程不是独立的应用程序。
操作系统不调度线程。

陈述4 :正确。
进程有独立的内存空间。
线程共享内存空间。
线程有独立的执行栈。
线程需要应用程序支持。
多个线程同时运行。
对于非多 CPU 无效。

结论:进程管理资源。
并发线程处理。

在java里面什么是线程,什么是主线程?主线程和子线程的关系