多线程和并发的区别是:多线程是java的特性,因为现在cpu都是多核多线程的,可以同时执行几个任务;高并发不是JAVA的专有的东西,是语言无关的广义的。关系是多线程是处理高并发的一种编程方法,即并发需要用多线程实现。
一、多线程和并发的区别和关系
区别
多线程是java的特性,因为现在cpu都是多核多线程的,可以同时执行几个任务,为了提高jvm的执行效率,java提供了这种多线程的机制,以增强数据处理效率。多线程对应的是cpu,高并发对应的是访问请求,可以用单线程处理所有访问请求,也可以用多线程同时处理访问请求。
在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。
高并发不是JAVA的专有的东西,是语言无关的广义的,为提供更好互联网服务而提出的概念。
典型的场景,例如:12306抢火车票,天猫双十一秒杀活动等。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。如果高并发处理不好,不仅仅降低了用户的体验度(请求响应时间过长),同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。
如果要想系统能够适应高并发状态,则需要从各个方面进行系统优化,包括,硬件、网络、系统架构、开发语言的选取、数据结构的运用、算法优化、数据库优化等……而多线程只是其中解决方法之一。
关系
多线程是处理高并发的一种编程方法,即并发需要用多线程实现。多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过多线程有助于系统承受高并发状态的实现。
延伸阅读:
二、线程的五大状态
- 创建状态当用 new 操作符创建一个线程的时候
- 就绪状态调用 start 方法,处于就绪状态的线程并不一定马上就会执行 run 方法,还需要等待CPU的调度
- 运行状态CPU 开始调度线程,并开始执行 run 方法
- 阻塞状态线程的执行过程中由于一些原因进入阻塞状态比如:调用 sleep 方法、尝试去得到一个锁等等
- 死亡状态run 方法执行完 或者 执行过程中遇到了一个异常
以上就是关于多线程和并发的区别和关系的内容希望对大家有帮助。