有些知识很久不看很容易就会忘掉,尤其是一些概念性知识。好记性不如烂笔头,不如记下来便于以后翻看。
二者区别在于 是否同时 。参考: 并发与并行的区别?
放几个比较有趣的答案,参考: 线程和进程的区别是什么? :
进程和线程都是一个时间段的描述,是 CPU 工作时间段的描述,只不过颗粒大小不同。
进程就是时间总和 = CPU 加载程序上下文的时间 + CPU 执行时间 + CPU 保存程序上下文的时间 线程也是时间总和 = CPU 加载线程上下文的时间 + CPU 执行时间 + CPU 保存线程上下文的时间 复制代码
进程是爹妈,管着众多的线程儿子
当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。摘自:《Java 并发编程实战》
当多个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区。
线程调度是指系统为线程分配处理器使用权的过程,主要调度方式有两种,分别是 协同式线程调度 和 抢占式线程调度 。
fork
创建子进程,如果子进程退出,而父进程并没有调用 wait
或 waitpid
获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程(或称僵死进程)。 参考资料:
(1)《深入理解 Java 虚拟机》周志明 著.
(2)《Java 并发编程实战》
(3) 并发与并行的区别?
(4) 线程和进程的区别是什么?