如何使用 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) {
}
}
}
我刚开始 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) {
}
}
}