用多线程实现银行家算法,哲学家进餐,SPOOLING算法,如有高手能帮忙写出代码,感激不尽!我的QQ23532101
解决方案 »
- 有谁能告诉跟我讲讲ArrayList和HashSet的优缺点
- try catch 问题
- random怎么使用啊,怎么不起作用
- java求字符串长度是怎么实现的呀?
- 散50分!求解关于内部类的问题!
- 请教一个Java窗口的制作Swing技术问题.
- JDBC中是否有和ADO中相似的类,可以进行ADD,Delete,updatebatch等操作,resultset好像不行?
- SOLARIS中文问题
- 我想学java,请教大家几个问题:)
- 使用jgoodies改变JAVA桌面程序的观感
- (散分!!!)用java简单写个能播放视频的,支持的格式随便 一个就行了....
- 如何调用经过混淆的class中的函数
class ChopStick
{
boolean available;
ChopStick()
{
available=true;
}
public void takeup(int num)
{
//System.out.println("拿起一根筷子");
while(!available)
{
try
{
System.out.println("哲学家"+num+"等待另一根筷子");
wait();
}
catch(InterruptedException e)
{}
}
available=false;
}
public synchronized void putdown()
{
available=true;
notify();
}
}class Philosopher extends Thread
{
ChopStick left,right;
int philo_num;
Philosopher(int num,ChopStick c1,ChopStick c2)
{
philo_num=num;
left=c1;
right=c2;
}
public void eat()
{
left.takeup(philo_num);
right.takeup(philo_num);
System.out.println("哲学家"+philo_num+"正在进餐!");
}
public void think()
{
left.putdown();
right.putdown();
System.out.println("哲学家"+philo_num+"正在思考!");
}
public void run()
{
while(true)
{
eat();
try
{
sleep(1000);
}
catch(InterruptedException e)
{
System.out.println("中断");
}
think();
try
{
sleep(1000);
}
catch(InterruptedException e)
{
System.out.println("中断");
}
}
}
}
public class exec
{
static ChopStick[] cs=new ChopStick[5];
static Philosopher[] ph=new Philosopher[5];
public static void main(String args[])
{
for(int i=0;i<5;i++)
cs[i]=new ChopStick();
for(int i=0;i<5;i++)
ph[i]=new Philosopher(i,cs[i],cs[(i+1)%5]);
for(int i=0;i<5;i++)
ph[i].start();
}
}