摘要: 这一篇说一下生产者与消费者问题,这是操作系统里有比较经典的问题。在操作系统里生产者与消费者问题是解决进程同步问题提出来的一种方法,但在线程里同样适用。我们先来想一下,为什么要提出生产者与消费者问题? 和操作系统一样,JAVA多线程的生产者与消费者问题一样是为解决同步而产生的,可是解决同步上一篇里面用synchronized,做一个标志位已经做到了。还要生产者和消费者问题干什么。synchronized来做到的线程同步解决不了实际上的需求,例如一家物流公司进行运货,他不可能来一件货物,他就马上叫司机把这件货物运到指定的地方。而是将一批批货物,积压到一定的需求,进行分类,然后叫司机去运这些货... 阅读全文
posted @ 2012-09-11 12:37 春天又来了 阅读(370) 评论(0) 推荐(0)
摘要: 例如上一篇的售票的例子,可能会打印出负数的票,主要的原因是由于线程之间的切换。要避免这个问题,必须在卖票的时候加一个限制,指定此时此刻只有等这个售票点卖完票,其他售票点才能卖票。 看一下出现问题的情况public class test9 { public static void main(String[] args) { TestThread t = new TestThread(); new Thread(t).start(); new Thread(t).start(); new Thread(t).start()... 阅读全文
posted @ 2012-09-10 08:28 春天又来了 阅读(370) 评论(0) 推荐(0)
摘要: 简单的了解一下JAVA的多线程后,觉的C#好像做的更好,C#通过委托的方式来实现多线程,当然JAVA实现多线程也很方便,但还是觉的C#做的更好。那么什么是多线程?一个进程中又可以包含一个或多个线程,一个线程就是一个程序内部的一条执行线索,如果要一程序中实现多段代码同时交替运行,就需要产生多个线程。 线程的生命周期 新建→运行→中断→死亡 中断有: 1.当前线程切换到另一个线程时发生 2.执行sleep时 3.执行wait方法时,调用wait方法使线程进入等待后,如果想让他开启必须调用notify方法 看一下单线程的情况,发现运行的结果他在线程MAIN里publi... 阅读全文
posted @ 2012-09-08 20:15 春天又来了 阅读(878) 评论(0) 推荐(0)
摘要: 一.谁在做Garbage Collection?在C++里,释放内存是手动处理的,要用delete运算符来释放分配的内存。这是流行的说法。确切地说,是应用认为不需要某实体时,就需用delete告诉系统,可以回收这块空间了。这个要求,对编码者来说,是件很麻烦、很难做到的事。随便上哪个BBS,在C/C++版块里总是有一大堆关于内存泄漏的话题。Java采用一种不同的,很方便的方法:Garbage Collection。Java垃圾回收机制放在JVM里。JVM完全负责垃圾回收事宜,应用只在需要时申请空间,而在抛弃对象时不必关心空间回收问题。二.对象在啥时被丢弃?在C++里,当对象离开其作用域时,该对象 阅读全文
posted @ 2012-09-06 14:47 春天又来了 阅读(222) 评论(0) 推荐(0)
摘要: 控制台输入 我不是很清楚为什么,Java的DOS控制台的输入会加一下TRY…CATCH,很多其他编程语言里没有过这样。虽然看到JDK 1.5后有增加了一个新类Scanner将System.in做了一个包装的样子后不需要再TRY…CATCH。但用起来还是感觉还是不太好!来看一下报错的输入,像这段程序是会报错了。报错的原因是:test8.java:6: 未报告的异常 java.io.IOException;必须对其进行捕捉或声明以便抛出。View Code public class test8{ public static void main(String[] args) { int x;... 阅读全文
posted @ 2012-09-06 14:36 春天又来了 阅读(341) 评论(0) 推荐(0)
摘要: 从09年接触第一门编程语言VisualBasic后学编程就渐渐成为大学课程中重要的一部份。我越来越对接触新的编程语言没有多少兴趣,例如现在我要学Java,是学校课程的安排,不然我想我不会去学习他。心想:但即然接触了,就不要学的太糟糕,所以我打算接下来花些时间看看Java。 先安装一下JDK,以前可以在SUN公司的主页网站里下载到,现在JAVA被甲骨文公司收购了,所以JDK现在可以到甲骨文公司的主页上下载。我之前从甲骨文公司主页那下载了一个最新版本的,从学校的FTP网站上下载来一个jdk1.6.0_02版本的,我比较怀旧,我就用学校下的老版本的好了。 如果你安装一个eclipse软件,他就... 阅读全文
posted @ 2012-09-05 19:42 春天又来了 阅读(890) 评论(0) 推荐(0)
摘要: Gof定义定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通 知并自动更新理解观察者设计模式:当一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。例如你在淘宝上购买了一件商品,当你付完钱后,你的淘宝帐户里会记录等待卖家发货这条信息,你的手机会收到一条短信说你手机银行里扣了钱,你的邮箱也可能会收到一封邮件。UML图银行取钱例子View Code using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 阅读全文
posted @ 2012-09-03 18:58 春天又来了 阅读(412) 评论(0) 推荐(0)
摘要: Gof定义使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。动机在软件系统中,经常面临着“某些结构复杂的对象”的创建工作,但由于需求的变化,这些对象将成面临着剧烈的变化,但他们拥有比较稳定一致的接口。原型模式(Prototype)的几个要点Prototype模式同样用于隔离类对象的使用者和具体类型(易变类型)之间的耦合关系,同样要求这些易变类型具有稳定的接口。Prototype模式对于“如何创建易变类的实体对象”采用原型克隆的方法来做,他使得我们可以非常灵活的动态创建“拥有某些稳定接口”的新对象–所需工作仅仅是注册一个新类的对象(原型),然后在任何需要的地方不断地Clone。 阅读全文
posted @ 2012-09-02 18:22 春天又来了 阅读(311) 评论(0) 推荐(0)
摘要: 使用VisualStudio和.Net来使用WebService是很方便的。下面做了一个小例子,通过一个提供气预报的WebService网址来简单实现天气预报这么一个功能:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx。 在实现这么一个小功能前看一下 WebService的定义 WebServices是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。 1、提供相关服务的WebService网址View Code 天气预报Web服务,数据来源于中国气象... 阅读全文
posted @ 2012-09-01 20:32 春天又来了 阅读(827) 评论(0) 推荐(0)
摘要: 定义为其他对象提供一种代理以控制对这个对象的访问。理解代理模式也是经常在我们生活中会发生的和编程中经常会接触到的事情。也许你没意识到这就是代理模式,但我想你应该接触过和使用过了。1、比如你喜欢一个女孩子,你不敢直接表白,于是你找了一个朋友代你去表白,那个代你表白的朋友就相当于一个代理。2、再从宏观一点的角度看,我们的操作系统也是一个代理模式,它是基于硬件和软件之间这么一个中间层、代理层。3、如果你接触过三层架构,那我想你一定知道哪三层,模型层(Model)、数据访问层(DAL)、业务逻辑层(BLL)。其实业务逻辑层就是相当于一个代理层。4、再比如生活中的这么一个例子,在大学校园里有些同学会做这 阅读全文
posted @ 2012-08-30 11:17 春天又来了 阅读(637) 评论(0) 推荐(0)