I have just started learning threads and pretty new to it.I'm trying to print alphabets and numbers one after the other.I have synchronized them using a flag but of no use.
public class Alphabets {
public static void main(String[] args) {
AN an= new AN(false);
Thread t1=new Thread(new Runnable() {
@Override
public void run() {
try {
an.Alpha();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
Thread t2= new Thread(new Runnable() {
@Override
public void run() {
try {
an.numbers();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
t1.start();
t2.start();
}
}
...
class AN
{
boolean flag;
AN(boolean flag)
{
this.flag=flag;
}
synchronized void Alpha() throws InterruptedException
{
if(flag==false)
{
for(char i='A'; i<='Z';i++)
{
System.out.println(+i);
notifyAll();
flag=true;
}
}
else
{
wait();
}
}
synchronized void numbers() throws InterruptedException
{
if(flag==true)
{
for(int i=1;i<=26;i++)
{
System.out.println(+i);
notifyAll();
flag=false;
}
}
else
{
wait();
}
}
}
My desired output is : a1b2c3d4....
My console output is : abcd...1234...
Can anybody point out the mistake since I'm unable to synchronize these two threads.