网络编程的并发问题
来源:互联网 发布:软件自动化测试 编辑:程序博客网 时间:2024/05/18 20:51
风吹山岗
2016-05-29
1. 在socket与serversocket之间收发流有getInputStream()和getOutputStream()
两个类socket、serversocket
三个方法:accept(),getInputStream()和getOutputStream()
在socket中,一般getInputStream()和getOutputStream()的方法不要求close,防止出现socket closed的问题。
2. 多线程并发问题
比如在一个atm系统中,多个操作同时对同一个账户进行取款、转账等操作,就会造成系统紊乱,数据出错。那要怎么办呢?那我们要保证我们在对这个账户进行操作时,数据是正确的,也就是不受干扰的。所以我们要加锁。
首先第一种,加操作锁(synchronized)但是这种锁只能对某一种操作进行加锁,比如转账或者取款,显然这种加锁方式是很不健康的。
第二种加锁方式是文件锁(trylock)。就是在你访问这些操作之前先对文件加锁,在进行操作。其他用户就不能对文件进行操作,只能读取,保证了数据的正确性。但是,这种加锁方式,由于文件是共享的,即在我们的atm例子中,txt数据文件只有一份,所以在对文件加锁的时候,其他用户都不能进行取款转账这些操作,要等某一用户操作完,文件解锁的时候再加锁再操作。所以显然这种加锁方式不仅失去了系统的并发性,而且也是不现实的。
第三种加锁方式特点:“批量,按顺序,写”。首先我们可以在这个txt文件前建一个操作池。用于存储用户对它的操作指令。即建立一个数组,按顺序存储它的指令操作,再按顺序读取指令,不断地循环,使得每个用户都可以随时对它进行操作。有时候指令多时,或者操作池满时,可以对用户先返回提醒消息,显示系统繁忙等消息。所以需要在用户那边有一个死循环,一直向操作池这边访问该指令是否已执行,并返回信息给用户。
- 网络编程的并发问题
- 并发编程的一些问题
- linux网络编程:并发服务器的模型
- linux网络编程:并发服务器的模型
- linux网络编程:并发服务器的模型
- [Linux网络编程] 并发服务器的实现
- 高性能网络编程(二):上一个10年,著名的C10K并发连接问题
- Unix网络编程--基于线程的并发编程(1)
- java并发编程面临的问题
- 并发编程cas的aba问题
- 网络编程与并发-TCP/UDP套接字、粘包问题、Socket编程、并发编程、FTP作业
- 网络编程与并发-TCP/UDP套接字、粘包问题、Socket编程、并发编程、FTP作业
- VS2003的网络编程问题
- 网络编程的一些问题
- 网络编程的一些问题
- linux c 网络编程 并发
- Liunx网络编程---并发服务器
- 高并发网络编程epoll
- hadoop 集群调优
- Android系统广播大全
- 知识库
- 枚举,注解,实体类,单元测试,反射对象字段------------举例使用
- C#学习笔记之线程调用带参数的方法
- 网络编程的并发问题
- AS jni调用入门(附图)
- 【Linux】Linux中常用操作命令
- 49.leetcode题目18. 4Sum
- 【iOS开发】棘手BUG
- 项目2——动物这样叫3
- vs2008学习2.使用自定义工具栏
- JAVA模式设计-开放/关闭原则
- 插入排序算法(Java语言)