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;
      }
    }
  • 相关阅读:
    idea中如何配置tomcat
    onselectstart属性解决双击出现的蓝色区域
    (二十二)数组的最大值和最小值
    (二十一)数组的初始化
    (二十)两种数据类型的对比
    (十九)数组的内存分配
    (十八)数组概述
    (十六)函数的重载
    (十七)自定义函数
    (十五)函数的入栈和出栈
  • 原文地址:https://www.cnblogs.com/ls1783047205/p/9751048.html
Copyright © 2011-2022 走看看