首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JAVA兑现网络编程之并发编程

2013-04-07 
JAVA实现网络编程之并发编程? ?我们运行一下发现balance为4或5,这是个错误的结果,如果一个类的对象在多线

JAVA实现网络编程之并发编程

? ?我们运行一下发现balance为4或5,这是个错误的结果,如果一个类的对象在多线程程序中导致竞争状态,则称这个类为线程不安全的。所以这个任务是线程不安全的。

三.用同步完善程序

? ?用互斥锁来实现同步,即在一任务开始执行时加锁,执行完毕后释放锁。在释放锁之前其它任务无法执行。同步完全可以避免竞争状态的产生,但有的时候还需要线程之间的相互合作。

? ?然后增加一个向账户提款(Withdraw)的任务,当余额小于取款数时,等待新存入的存款。

? ?Account类添加

? ?private static Lock lock = new ReentrantLock(); ?//创建一个锁

? ?private static Condition newDeposit = lock.newCondition(); ?//实现一个条件

? ??Account类中应用互斥锁的的方法如下

? ? 而客户端连接上服务器后,创建两个IO流

? ? //IO streams
? ? DataOutputStream toServer?= new DataOutputStream(socket.getOutputStream());

? ? DataInputStream fromServer = new DataInputStream(socket.getInputStream());

?即可传输order(菜单选项)和amount

? ? //Send the order, amount to the server
? ? toServer.writeInt(order);
? ? toServer.writeDouble(amount);
? ? toServer.flush();

? ?最后再读取balance

? ?balance = fromServer.readDouble();

?

?

热点排行