热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ftp并发大量进程_Java并发编程的原理、特点和实际运用场景

顺序编程,里面所有的事物都只能按照既定顺序执行一个步骤。在Java编程中,很大一部分内容,都是通过顺序编程来实现的,但是对于

顺序编程,里面所有的事物都只能按照既定顺序执行一个步骤。在Java编程中,很大一部分内容,都是通过顺序编程来实现的,但是对于有些情景,使用并发编程,效果更好,这样就可以在同一时刻,并发执行应用程序中多个内容,而且还可以通过多处理器来执行。

bac83629bc88338859de7b48913faac4.png

并发编程有两个好处,一个是提高应用程序执行速度,一个是对于有些程序,可以提供方便易用的模型。

但是并发编程也有很多问题,并行任务很容易互相干扰,这就导致很多问题的出现,因此并发在实际运用中,具有不确定性。我们在实际编写代码过程中,往往觉得自己的代码能够正确的工作,但是在实际应用中,在一定的情况下,会出现很多问题。这些问题,往往不是在开发和测试阶段就能发现的,一般都是在客户使用过程中,才发现问题,而且是偶尔发生,个别问题还很难排查。

说到这里,大家可能觉察到并发编程很危险。其实Java 1.5已经对并发做了很多改善,但是在编译阶段,依然很难排查出并发问题,所以要想编写出好的并发程序,一定要多想,多研究,把各种可能出现的问题都想到,从而做出应对措施,这样才能减少并发问题的出现。

482e1e782086d02bf3c9c9869cc80f7b.png

其实并发程序在现在的web程序中,应用的越来越多,比如servlet就具备天生的多线程特性, web服务器一般都是由多个服务器来支持,并发也是为了充分地运用多个处理器。

Java语言它天生就具备多线程特性,但是在日常工作中,很少能发现并发问题,在实际运用中,市场会发生系统崩溃,导致重要数据丢失,而且在多处理器环境中,这种问题还会更严重。

并发不止是Java语言的一部分,更是一套全新的概念,要想学好,就得多下功夫。

b705df0509f7fc455756834e415d31d5.png

上面我们讲到,如果串行执行程序,速度会很慢,但是如果将程序切分为多个部分,每个部分在各自的处理器上面独自运行,这样速度会大幅提高。现在计算机速度的提升主要靠多核,所以充分利用多核处理器,才能使程序跑的更快。

一般web服务器都是多处理器,我们可以将用户请求分配到不同的线程中,然后就可以将这些请求转发到多个处理器中去处理。

一般来说,并发往往是用来提高单处理器性能。但是单处理器上面执行并发的开销要比顺序执行大很多,原因是来回切换任务,增加损耗。顺序执行如果遇到阻塞,就会导致程序无法继续支干线,后面的任务都会停止,如果用并发来做,就可以有效解决这个问题,一个任务阻塞,其他任务照常进行。

单处理器提高性能主要靠事件驱动编程。因为并发编程最重要的一个特点是它可以创建响应式界面。如果一个程序长期操作,就会忽略用户输入,变为不可响应。但是如果用并发,通过一个单独的线程来专门执行用户输入,这样才能及时响应。

749653bbe984c630febfe51cf57f28a6.png

在操作系统中,最常见的并发操作就是使用进程,一般操作系统会周期性进行进程切换,来实现多程序多进程,而且每个进程都是互相隔离的,不会彼此干预。但是Java并发编程会共享内存或者I/O等资源,所以Java多线程重要的是如何协调这些资源,防止出现多个线程同时访问一个资源,这就会造成死锁。

举个简单例子,我想备份一个文件,我需要在本地硬盘中备份了一份,然后在ftp上备份一份,然后在U盘里面备份一份,但是这几个操作如果按照顺序来执行,速度会很慢,但是我如果并行来执行这三个备份操作,速度会翻倍,而且这三个任务都在自己的地址空间中运行,互相不干扰,所以他们是独立的,不会有什么影响。

70b4eb11a2a8e4dda1ef745dbe9b91de.png

顺序编程指的是所有的事物都只能按照既定顺序执行一个步骤。在Java编程中,很大一部分内容,都是通过顺序编程来实现的。但是对于有些情景,使用并发编程,效果更好,这样就可以在同一时刻,并发执行应用程序中多个内容,而且还可以通过多处理器来执行。

并发编程有两个好处,一个是提高应用程序执行速度,一个是对于有些程序,可以提供方便易用的模型。

但是并发编程也有很多问题,并行任务很容易互相干扰,这就导致很多问题的出现,因此并发在实际运用中,具有不确定性。我们在实际编写代码过程中,往往觉得自己的代码能够正确的工作,但是在实际应用中,在一定的情况下,会出现很多问题。这些问题,往往不是在开发和测试阶段就能发现的,一般都是在客户使用过程中,才发现问题,而且是偶尔发生,个别问题还很难排查。

说到这里,大家可能觉察到并发编程很危险。其实Java 1.5已经对并发做了很多改善,但是在编译阶段,依然很难排查出并发问题,所以要想编写出好的并发程序,一定要多想,多研究,把各种可能出现的问题都想到,从而做出应对措施,这样才能减少并发问题的出现。

其实并发程序在现在的web程序中,应用的越来越多,比如servlet就具备天生的多线程特性, web服务器一般都是由多个服务器来支持,并发也是为了充分地运用多个处理器。

Java语言它天生就具备多线程特性,但是在日常工作中,很少能发现并发问题,在实际运用中,经常会发生系统崩溃,导致重要数据丢失,而且在多处理器环境中,这种问题还会更严重。

并发不止是Java语言的一部分,更是一套全新的概念,要想学好,就得多下功夫。

上面我们讲到,如果串行执行程序,速度会很慢,但是如果将程序切分为多个部分,每个部分在各自的处理器上面独自运行,这样速度会大幅提高。现在计算机速度的提升主要靠多核,所以充分利用多核处理器,才能使程序跑的更快。



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
author-avatar
流浪的牛仔2011Ting_883
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有