Java高级特性(4)作业
题目:
试编写一个基于消息队列的股票交易价格显示程序。该程序中的一个线程模拟从卫星通信、微波通信或股票信息发射台等不同途径获取最新的股票交易价格信息,并将价格数据写入一个消息队列中;程序中的另一个线程负责从消息队列中取出价格数据,并以图形方式展示给终端用户。
(提示:设计本程序的关键是处理好消息队列的同步问题;还可考虑使用输入?输出流或JDBC 实现消息队列的持久性。)
什么是消息队列:
消息队列是线程间通讯的手段:
import java.util.*
public class MsgQueue{
private Vector queue = null;
public MsgQueue(){
queue = new Vector();
}
public synchronized void send(Object o)
{
queue.addElement(o);
}
public synchronized Object recv()
{
if(queue.size()==0)
return null;
Object o = queue.firstElement();
queue.removeElementAt(0);//or queue[0] = null can also work
return o;
}
}
同时可以使用java.util.concurrent来实现连接池、消息队列
多线程:
实现方式:
extend Thread
implements Runnable
构造是Thread(适合Run方法小的情况下)
线程加锁:synchronized
线程之间的通信:wait() 和notifyAll()
Web服务器(Web Container such as Tomcat and Apache)的作用:产生一个连接池,为每一个连接分类一个线程,这样做能够省去每个请求创建Thread对象的开销。
