关闭

网络编程的并发问题

标签: 网络编程并发线程
249人阅读 评论(0) 收藏 举报
分类:

风吹山岗

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文件前建一个操作池。用于存储用户对它的操作指令。即建立一个数组,按顺序存储它的指令操作,再按顺序读取指令,不断地循环,使得每个用户都可以随时对它进行操作。有时候指令多时,或者操作池满时,可以对用户先返回提醒消息,显示系统繁忙等消息。所以需要在用户那边有一个死循环,一直向操作池这边访问该指令是否已执行,并返回信息给用户。

 

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android多线程并发访问网络

最近公司接入了心率设备,把心率传入到服务器,很轻松地完成了这个工作,但是由于没有压力测试的专业人员,测试的任务就落到了我的身上,没办法谁让Android开发人员是个全才呢!! 先说说新的测试要求吧,...
  • yanglei0917
  • yanglei0917
  • 2016-10-19 13:57
  • 2640

Linux网络编程——tcp并发服务器(poll实现)

想详细彻底地了解poll或看懂下面的代码请参考《Linux网络编程——I/O复用之poll函数》 代码: #include #include #include #include #incl...
  • lianghe_work
  • lianghe_work
  • 2015-06-17 17:13
  • 3012

Linux socket 网络编程常见问题总结

网络编程常见问题总结 串讲(一)  网络编程常见问题总结  6 I& I! E- x8 Z+ p- U- B   在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP sock...
  • chinaeran
  • chinaeran
  • 2015-03-06 16:17
  • 2440

网络编程三---多线程/进程解决并发问题

前文列出的代码给大家展示了一个最简单的网络程序,但正如文章末尾所提的,这个最简单的网络程序最大的缺点是服务端一次只能服务一个客户端,就比如说你去吃饭,饭店只有一个服务员, 而且服务员在客户离开之前只能...
  • hailong0715
  • hailong0715
  • 2017-03-30 00:08
  • 1851

呵呵关于网络编程的一些棘手问题

  • 2011-12-20 19:32
  • 4KB
  • 下载

JAVA网络编程常见问题与答案

  • 2011-03-20 16:09
  • 48KB
  • 下载

Linux网络编程:绑定( bind )需要注意的问题

  • 2015-03-04 16:23
  • 2KB
  • 下载

【Linux网络编程】Linux多播问题(No such device)解决方法

多播的测试代码如下: #include #include #include #include #include #include #include #define PORT 10...
  • dengjin20104042056
  • dengjin20104042056
  • 2016-08-29 22:36
  • 991

Java网络编程socket的半包,粘包与分包的问题

http://zhaohuiopensource.iteye.com/blog/1541270 首先看两个概念:  短连接:  连接->传输数据->关闭连接     HTTP是无状态的,浏览器...
  • qq_29663071
  • qq_29663071
  • 2017-07-21 10:10
  • 245

网络编程常见问题总结 baonenghui【科学】

这里对在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出. 对于网络编程的更多详细说明建议参考下面的书籍 ...
  • zjl410091917
  • zjl410091917
  • 2012-09-14 09:45
  • 2893
    个人资料
    • 访问:2711次
    • 积分:109
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:1篇
    • 译文:0篇
    • 评论:2条
    最新评论