多线程 实现控制台打印“我爱你”10遍

Posted ls1783047205

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程 实现控制台打印“我爱你”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;
  }
}

 

以上是关于多线程 实现控制台打印“我爱你”10遍的主要内容,如果未能解决你的问题,请参考以下文章

多线程面试题之三线程按顺序交替打印ABC的方法

多线程经典问题2——子线程之间交替问题

多线程交替打印ABC的多种实现方法

多线程交替打印ABC的多种实现方法

1.用两种方式实现两个线程,一个线程负责打印1-2600,另一个线程打印A-Z,反复打印10

Linux 多线程编程 实例 2