都知道java多线程编程很重要很历害,但怎么用好多线程呢?业务中为什么要用多线程,以及同时启动多少个线程合适呢?这些问题一直都比较模糊。今天搜罗了一翻,做个总结。
1、首先区别线程与进程的关系 定义(百度):
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
实际点:我们要开生日party,这就是一个进程,开party要很多准备,如买饮料,买装饰,布置场地等等,这些都是一个个线程,如果目前只有一个人在操办此事,只能一件件顺序来做,那就是单线程(一个进程必须有一个线程),如果有多个人可以同时操办不同的事情,这时的执行效率提高了,节省了工作时间,这就是多线程。OK!
2、多线程的优点(原文:http://ifeve.com/benefits/):
- 资源利用率更好
- 程序设计在某些情况下更简单
- 程序响应更快。
多线程的不利方面:
- 线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;
- 多线程需要协调和管理,所以需要CPU时间跟踪线程;
- 线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;
- 线程太多会导致控制太复杂,最终可能造成很多Bug;
同时启动多少个线程合适?