zoukankan      html  css  js  c++  java
  • 写2个线程,其中一个线程打印1~52,另一个线程打印A~z,打印顺序应该是12A34B45C……5152Z

    我写的

    class LN
    {
        private int flag = 0;
        public static char ch = 'A';
        public static int n = 1;
        public synchronized void printLetter()
        {
            try
            {
                if(flag == 0 || flag == 1)
                {
                    wait();
                }
                else
                {
                    //System.out.println("flag = " +     flag);
                    System.out.print(ch);
                    ch++;
    
                    flag = (flag + 1) % 3;
    
                    notifyAll();
                }
            }
            catch(InterruptedException ex)
            {
                ex.printStackTrace();
            }
        }
        public synchronized void printNumber()
        {
            try
            {
                if(flag == 2 )
                {
                    wait();
                }
                else
                {
                    //System.out.println("flag = " +     flag);
                    System.out.print(n);
                    n++;        
    
                    flag = (flag + 1) % 3;
                    
                    notifyAll();
                }
            }
            catch(InterruptedException ex)
            {
                ex.printStackTrace();
            }
        }                
    }
    
    class Letter extends Thread
    {
        LN ln;
        Letter(LN ln)
        {
            this.ln = ln;
        }
        public void run()
        {
            for(int i = 0 ; i< 26; i++)
            {
                ln.printLetter();
            }
        }
    }
    class Number extends Thread
    {
        LN ln;
        Number(LN ln)
        {
            this.ln = ln;
        }
        public void run()
        {
            for(int i = 0 ; i< 78; i++)
            {
                ln.printNumber();
            }
        }    
    }
    
    class Practice1 
    {
        public static void main(String[] args) {
        
            LN ln = new LN();    
            new Letter(ln).start();
            new Number(ln).start();
        }
    }

    网上找的

    public class ThreadDemo {
    // 测试
    public static void main(String[] args) {
    Object obj = new Object();
    // 启动两个线程
    Thread1 t1 = new Thread1(obj);
    Thread2 t2 = new Thread2(obj);
    
    t1.start();
    t2.start();
    }
    }
    
     
    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();
    }
    }
    }
    
    }
    }
    }
    
     
    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 {
    obj.wait();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    }
    }
  • 相关阅读:
    引用 struts2标签详解
    Java 中日期的计算
    在一个FORM中实现多个ACTION动作
    java.lang.OutOfMemoryError: PermGen space最好的解决方法
    Java实现和栈的应用举例
    Java的自动装箱和拆箱
    oracle11g更改字符集AL32UTF8为ZHS16GBK
    设计的臭味
    OOD设计五个原则
    推荐JQuery学习简介
  • 原文地址:https://www.cnblogs.com/wmxl/p/5128721.html
Copyright © 2011-2022 走看看