如何使用 java 中的线程在十秒内计算出尽可能多的素数

how to calculate as many primes as we can in ten seconds using threads in java

我刚开始 java,我正在尝试尽可能多地学习 java。我试图解决一个问题,但找不到正确的解决方案。我按照自己的逻辑试过这个程序,以失败告终。期待有人的指导。

 public class ThreadDemo implements Runnable
 {
    Thread t;
    ThreadDemo()
        {
        t=new Thread(this,"Child");
        t.start();  
        }
    public void run()
        {
        try 
         {
          Thread.sleep(2000);
        }
        catch (Exception ex){}
        }
    public static void main(String[] args)
     {
        ThreadDemo td=new ThreadDemo();
        Thread t1=Thread.currentThread();
        t1.setName("prime");
          try 
        {
        for(int i=0;;i++)
            {
                 if(i!=0&&i!=1&& i%i ==1 && i%2!=0)
                 {
                     Thread.sleep(1);
                     System.out.println(i + "j");
                 }
             }  
        }
        catch (Exception ex){}
     }
}

我认为您正在尝试通过实现一个在 10 秒内计算素数的函数来学习使用线程。换句话说,你想通过多线程在 10 秒后停止素数计算。所以你可以在素数计算循环中设置一个标志让它停止,然后在另一个线程中让它在 10 秒后改变。

对了,你计算素数的方法不对。我向您展示了在 10 秒内打印尽可能多的数字的核心。可以修改代码打印素数》

public class ThreadDemo implements Runnable {
    Thread t;
    static boolean flag = true;

    ThreadDemo() {
        t = new Thread(this, "Child");
        t.start();
    }

    public void run() {
        try {
            Thread.sleep(10_000);
            flag = false;
        } catch (Exception ex) {
        }
    }

    public static void main(String[] args) {
        ThreadDemo td = new ThreadDemo();
        Thread t1 = Thread.currentThread();
        t1.setName("prime");

        try {
            for (int i = 0; flag; i++) {
                System.out.println(i);
                Thread.sleep(1);
            }
        } catch (Exception ex) {
        }
    }
}