法后方可使用.下面我写一个例子来说明线程同步,这个例子有两个线程会计和出纳,他们共同有一个账本.他们俩都可以存取方法对账本进行访问,会计使用存取方法的时候写入存钱的记录,出纳则写入取钱的记录。因此会计使用账本的时候出纳被禁止使用,反之也是如此。就是一个人使用另外一个人必须等待。下面我通过一个小程序Applet来实现这个事:
import Java.applet.*;
import Java.awt.*;
import Java.awt.event.*;
public class MyThread extends Applet implements Runnable {
int money = 100;
TextArea text1 = null;
TextArea text2 = null;
Thread Kuaiji = null;
Thread Chuna = null;
public void init() {
Kuaiji = new Thread(this);
Chuna = new Thread(this);
text1 = new TextArea(20,8);
text2 = new TextArea(20,8);
add(text1);
add(text2);
}
public void start() {
Kuaiji.start();
Chuna.start();
}
public synchronized void Cunqu(int number) {
if(Thread.currentThread() == Kuaiji) {
for(int i=1;i <=3;i++) {
money = money + number;
try {Thread.sleep(1000);}
catch(Exception e){}
text1.append("\n"+money);
}
}
else if(Thread.currentThread() == Chuna) {
for(int i=1;i <=2;i++) {
money = money - number/2;
try {Thread.sleep(1000);}
catch(Exception e){}
text2.append("\n"+money);
}
}
}
public void run() {
if(Thread.currentThread()==Kuaiji || Thread.currentThread()==Chuna) {
for(int i=1;i <=3;i++) {
Cunqu(30);
}
}
}
}
当一个线程使用同步方法中的某个变量,而此变量又需要其他线程修改后才能符合本线程的需要,那么可以再同步方法中使用wait()方法,使本线程等待,并允许其他线程使用这个同步方法.用notfyAll()方法同志所有的由于使用这个同步方法的处于等待的线程结束等待进入同步方法中运行,如果使使用notfy()就是单独同志一个线程进行同步方法进行活动.简单的理解就是wait()方法让线程等待,notfy()当一个线程运行,notfyAll()让全部线程运行。虽然Java支持多线程.一般线程不需要我们自己处理.但是也是需要了解和掌握的。再日后的项目中获取会根据不同情况,有不同的需求。






