java - 如何让两个线程同时工作

标签 java multithreading

我创建了两个线程:一个用于填充数组,第二个用于打印它。看起来两个线程不能同时工作。

当我运行代码时,它的打印第一个线程工作,然后打印数组,第二个线程工作,我如何知道它们是否同时工作?

这是我的代码:

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        firstthread f=new firstthread();            
        secondthread s=new secondthread();

        s.start();
        f.start();         
    }

}

并且该类包含填充和打印方法:

public class Array {
private static int [] ar=new int[500];

 public static void fillarray()
 {
     for (int i = 0; i < ar.length; i++)         
            ar[i]=i;
 }

 public static void printarray()
 {
     for (int i = 0; i < ar.length; i++)         
          System.out.print(ar[i]+" ");  
 }
 }

第一个线程类:

    public class firstthread extends Thread{

            public void  run() {

                   Array.fillarray();
                System.out.print("first thread working ");

            }

    }

第二个线程类:

    public class secondthread extends Thread{


        public void run() {

            Array.printarray();

            System.out.println("second array working");
        }

    }

最佳答案

fillarray 和 printarray 方法运行得太快,因此您无法获得线程。

将 Thread.sleep(10) 添加到每个循环中。这样,代码运行速度会慢得多,并且线程会分散。他们可能会交替使用这种方法。

然后改为 sleep 随机的秒数,您会看到不同的行为。

关于java - 如何让两个线程同时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20062087/

相关文章:

java - 设置 JTextField 设置

java - 在 ASP.NET Web API 中创建输入参数并使用 java web 服务功能

java - 等级评价

c# - 我如何在 Semaphore 和 SemaphoreSlim 之间进行选择?

java - 如何允许匿名上传到云存储

java - Java中的整数除法

c++ - 提高 std::vector 的存储容量/性能

c++ - OpenMP 和 C++ : private variables

python - 多线程在同一程序中运行UDP客户端和UDP服务器

java - 无法创建新的 native 线程