zoukankan      html  css  js  c++  java
  • 多线程 实现控制台打印“我爱你”10遍

    package Thread;
    /**
     * 
     * @author Administrator
     *创建ABC三条线程 保证A线程 打印 我 B线程 打印 爱  C线程 打印 你  循环10次
     */
    public class DoSomeTest {
        public static void main(String[] args) throws InterruptedException {
            Object a = new Object();
            Object b = new Object();
            Object c = new Object();
            
            Thread t1 =new Thread(new DoSome("我",c,a));
            Thread t2 =new Thread(new DoSome("爱",a,b));
            Thread t3 =new Thread(new DoSome("你",b,c));
            t1.start();
            Thread.sleep(1000);
            t2.start();
            Thread.sleep(1000);
            t3.start();
        }
    }
    package Thread;
    /**
     * 控制线程打字
     *
     */
    public class DoSome implements Runnable {
         //三个变量 三条线程之间切换执行 一把锁是不够的 需要两把锁 对象有锁的定义 Object对象
        private String word;//线程要打印的字
        private Object prev;//当前线程的上一个线程要持有的锁
        private Object current;//当前线程所要持有的锁
        
        @Override
        public void run() {
         for(int i = 0;i<10;i++){
             synchronized(prev){
                 synchronized(current){
                     System.out.println(word);
                     current.notify();
                 }
                 try {
                    prev.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
             }
         }        
        }
        //打印字的操作
      public DoSome(String word,Object prev,Object current){
          this.word = word;
          this.prev = prev;
          this.current=current;
      }
    }
  • 相关阅读:
    好文推荐
    高效词频分析
    内网渗透技巧:判断机器真实外网IP的5种方法总结
    禁用substr、substring、mid函数的sql注入脚本
    内网文件传输
    工作
    我是如何逃过所有杀软进行内网端口转发的
    扎克伯格开发的家用AI: Jarvis
    Python初学者之网络爬虫(二)
    Python初学者之网络爬虫
  • 原文地址:https://www.cnblogs.com/ls1783047205/p/9751048.html
Copyright © 2011-2022 走看看