如何在序列中打印输出,如#34;嗨你好......"使用线程

时间:2017-08-20 13:50:54

标签: java multithreading

我想打印输出,如:

hi
hello
hi 
hello
..
..

使用multithreading的无限时间。我试过这个,但每当我运行代码然后变得不同时。

这是我的code

class Abc implements Runnable
{
    public void run()
    {
            while(true)
            {
                System.out.println("Hello");

                try
                {
                Thread.sleep(1000);
                }   
                catch(Exception e)
                {

                }
        }
}
}

public class ThreadDemo {

    public static void main(String[] args) {

        Abc obj = new Abc();
        Thread t1 = new Thread(obj);        
        t1.start();

        while(true){
            System.out.println("Hi");

            try{
            Thread.sleep(1000);
            }   
            catch(Exception e)
            {

            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

实际上,两个线程已启动,但其中一个线程打印hi而另一个hello没有任何条件。

您可以使用共享的 volatile boolean 变量来确定是否应打印hellohi
例如,在ThreadDemo

public static volatile boolean isHello;

然后在线程run()方法中,指定要打印的条件。

在打印Hello:

的线程中
if (!ThreadDemo.isHello) {
  System.out.println("Hello");
  ThreadDemo.isHello = true;
}

和另一个:

if (ThreadDemo.isHello) {
  System.out.println("Hi");
  ThreadDemo.isHello = false;
}