前面简单浏览过了一遍java基础,反射,数据结构是核心,现在又来到了另外一个核心,多线程。
多线程很重要,至少目前是这样。
多线程也很扯淡,内存溢出,锁问题也常常因为多线程的使用而爆发。
前几年一直是做OA系统,基本没用到什么线程,有些数据处理也是用的EBS的reques做的。
在JAVA中写线程的机会很少,只有部分场景,例如邮件和代办的异步分发。
当做自动化平台的时候,大量使用kafka和并发任务处理的时候,心跳和任务每天都在走着多线程。
偶尔就会蹦出来个mysql行锁,和kafka阻塞等问题。
下面开始多线程的旅程,看看java到底怎么玩的多线程。
多线程程序在较低的层次上扩展了多任务的概念:
一个程序同时执行多个任务。
通常,每一个任务称为一个线程–thread,它是线程控制的简称。
可以同时运行一个以上线程的程序称为多线程程序–multithreaded。
多进程与多线程有哪些区别?
本质区别在于,每个进程拥有自己的一整套变量,而线程则共享数据。共享变量使线程之间的通信比进程之间的通信更有效、更容易。此外,在有些操作系统中,与进程相比较,线程更轻量级,创建、撤销一个线程比启动新进程的开销小的多。