一个applet小应用程序,是关于多线程的,希望两个线程交替执行,
写了一个html执行它,但是这个html在命令行用appletviewer运行一切正常,在IE中打开也能看到输出,但只是一个线程被执行一次的结果,为什么呢?!
写了一个html执行它,但是这个html在命令行用appletviewer运行一切正常,在IE中打开也能看到输出,但只是一个线程被执行一次的结果,为什么呢?!
解决方案 »
- 请教个Scanner的问题
- 请指出这个小程序的错误,并写出详细解释
- java 里面有没有类似 C++里面的预编译指令:#ifdef identifier如果identifier为一个定义了的符号,your code就会被编译,否则剔除
- 关于GUI的问题
- 为什么我老无法捕捉到windowDeactived这个事件?
- 大家来谈谈经常上的十大网站,踊跃响应吧,共同学习!!TOP10
- 向大家请教问题,为表诚意,先给300分。(如果每个帖子的有效回答超过10个,我就会再开一个,直到问题圆满解决)
- JAVA技术手册(Java in a Nutshell第三版)怎么样,适合初学者吗?
- 请问C++ 程序员和JAVA程序员,到底谁挣钱多? 谁更有前途?
- 如何下载jdk完整文档?
- 求解JAVA算法
- parseDouble返回的是double,为什么Double的封装器也能接受呀
//进程同步中的wait()、notify()、notifyall()方法
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
class saler
{
int n5=0,n10=0,n20=0;
String s=null;
public synchronized void rule(int money)
{
if(money==5)
{
n5=n5+1;
s="给您票,您的钱正好";
Sale.text.append("\n"+s);
}
else if(money==20)
{
while(n5<3)
{
try
{
s="对不起,找不开,请等待";
Sale.text.append("\n"+s);
wait();
}
catch(InterruptedException e)
{
}
}
n5=n5-3;
n20=n20+1;
s="给你票,"+"收您二十元,找您15元";
Sale.text.append("\n"+s);
}
notifyAll();
}
}
public class Sale extends Applet implements Runnable
{
saler wang;
Thread zhang,li;
static TextArea text;
public void init()
{
zhang=new Thread(this);
li=new Thread(this);
text=new TextArea(30,50);
add(text);
wang=new saler();
}
public void start()
{
li.start();
zhang.start();
}
public void run()
{
if(Thread.currentThread()==zhang)
{
for(int i=1;i<=5;i++)
wang.rule(20);
}
else if(Thread.currentThread()==li)
{
text.append("li");
for(int i=1;i<=15;i++)
wang.rule(5);
}
}
}//ht.html
<applet code=Sale.class width=500 height=500>
</applet>