2つのスレッドを書き、1つのスレッドは1~52を印刷し、もう1つのスレッドはアルファベットA-Zを印刷します.印刷順序は12 A 34 B 56 C……5152 Z


package threaddemo;

/**
 * 
 * 
 * @author snowday88
 */
public class ThreadDemo
{
    //  
    public static void main(String[] args) throws Exception
    {
        Object obj = new Object();
        //  
        Thread1 t1 = new Thread1(obj);
        
        Thread2 t2 = new Thread2(obj);
        
        t1.start();
        t2.start();
    }
    
}

//  1-52
class Thread1 extends Thread
{
    private Object obj;
    
    public Thread1(Object obj)
    {
        this.obj = obj;
    }
    
    public void run()
    {
        synchronized (obj)
        {
            //  1-52
            for (int i = 1; i < 53; i++)
            {
                System.out.print(i + " ");
                if (i % 2 == 0)
                {
                    //    
                    obj.notifyAll();
                    try
                    {
                        obj.wait();
                    }
                    catch (InterruptedException e)
                    {
                        e.printStackTrace();
                    }
                }
            }
        }
        
    }
    
}

//  A-Z
class Thread2 extends Thread
{
    private Object obj;
    
    public Thread2(Object obj)
    {
        this.obj = obj;
    }
    
    public void run()
    {
        synchronized (obj)
        {
            //  A-Z
            for (int i = 0; i < 26; i++)
            {
                System.out.print((char)('A' + i) + " ");
                //    
                obj.notifyAll();
                try
                {
                    //  
                    if (i != 25)
                    {
                        obj.wait();
                    }
                }
                catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
                
            }
            
        }
    }
    
}