java多线程

本文介绍了Java多线程的概念,包括线程与进程的区别,线程的轻量级特性,以及僵死进程。同时讨论了协程这一概念,对比了线程和协程的差异。文章还详细讲解了Callable、Future和FutureTask的使用,以及实现线程安全的三种方式。最后,分析了内存泄露的定义、如何防止内存泄露,特别是关注了ThreadLocal可能导致的内存溢出问题及其原因。
摘要由CSDN通过智能技术生成

线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线 程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程, 或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。

程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。 
进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是 一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个 指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如 CPU 时间,内存空间,文件,文 件,输入输出设备的使用权等等。换句话说,当程序在执行时,将会被操作系统载入内存中。

线程是进 程划分成的更小的运行单位。线程和进程大的不同在于基本上各进程是独立的,而各线程则不一定, 因为同一进程中的线程极有可能会相互影响。从另一角度来说,进程属于操作系统的范畴,主要是同一 段时间内,可以同时执行一个以上的程序,而线程则是在同一程序内几乎同时执行一个以上的程序段。

僵死进程:子进程执行完,但是父进程没有通过wait / waitpid来取时才释放子进程占用的资源。例如进程的ID号、进程的退出状态、进程运行的CPU时间等。资源一直被消耗着。. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值