synchronized指定したメソッドについて質問です。

スレッドを2つ起動し片方はincrement、decrementを実行し続けるスレッドを起動したとします。
1つ目のスレッドが�@の場所でwaitで待機した場合、2つ目のスレッドはshareにアクセスできないので�Aのnotifyで�@のwaitを解除できないと思うのですが、
waitで待機してる時は他のスレッドでもshareにアクセスできるということなのでしょうか?

class share{ //共有クラス
private int i=0;
public synchronized void increment(){
while( i != 0){
try {
wait(); //�@
} catch (InterruptedException e) {
}
notify();
i++;
}
public synchronized void decrement(){
while( i == 0){
try {
wait();
} catch (InterruptedException e) {
}
notify(); //�A
i--;
}
}