菜鸡求问,c里的epoll和java里的线程池到底怎么理解,优劣如何?
服务器并发模型可分为单线程和多线程模型。这里的线程通常是指“i/o线程”,即负责i/o操作和协调任务分配的“管理线程”。实际的请求和任务通常由所谓的“工作线程”处理。在多线程模型中,每个线程不仅是一个i/o线程,而且也是一个工作线程。所以我们这里讨论的是单i/o线程和多工作线程的模型,这也是最常用的服务器并发模型。这个模型在我的项目的服务器代码中随处可见。它还有一个名字叫做“半同步/半异步”模型。同时,这种模式也是生产者/消费者(特别是多消费者)模式的一种表现。
此体系结构主要基于i/o多路复用的思想(主要是epoll,select/poll已过时)。通过单向i/o复用,可以实现高效的并发,避免多线程i/o来回切换的各种开销。它清晰易管理。基于线程池的多工作线程可以充分发挥和利用多线程的优点,利用线程池进程池进一步提高资源的可重用性,避免线程过多。
epoll是linux中高并发服务器的完美解决方案,因为它基于事件触发,所以它不仅比select快一个数量级。
单线程epoll最多可触发15000次。但是,在添加服务之后,由于大多数服务都处理数据库,因此会出现阻塞。此时,必须使用多线程来加速。
java中的多线程,并发知识在实际项目中的什么地方可以应用呢?
在java开发中,多线程通常用于并行处理一些业务,如同时响应多个用户的请求,或并行启动api处理、并发数据库访问等,其优点如下:
(1)多线程提高了系统的cpu利用率服务器或计算机;
(2)多线程实现了并发处理能力,提高了访问能力;
(3)节省了等待带来的各种成本。
原文标题:java线程 菜鸡求问,c 里的epoll和java里的线程池到底怎么理解,优劣如何?,如若转载,请注明出处:https://www.tzjingsheng.com/tougao/53971.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「豪运号」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。