Java线程睡眠辅助

Java线程睡眠辅助,java,multithreading,Java,Multithreading,您好,其主要思想是,如果外螺纹>内螺纹,内螺纹必须等待1000毫秒(1秒),然后再次检查。我试着寻找这个,但找不到解决办法。有人能帮我吗?(我刚开始学习线程) 初学者,而不是有一个除主方法之外没有任何别的类,并且实现可运行的,并且有男性和女性扩展A,考虑男性和女性只是执行可运行的自己。第二,您的阳方法和阴方法在其run方法中不包含任何内容,因此在另一个线程上没有任何内容可以运行。因此,您的线程一开始什么都不做。Thread.sleep方法是一种静态方法,它将当前线程“休眠”一段时间。它不能用

您好,其主要思想是,如果外螺纹>内螺纹,内螺纹必须等待1000毫秒(1秒),然后再次检查。我试着寻找这个,但找不到解决办法。有人能帮我吗?(我刚开始学习线程)




<>初学者,而不是有一个除主方法之外没有任何别的类,并且实现可运行的,并且有男性和女性扩展A,考虑男性和女性只是执行可运行的自己。第二,您的阳方法和阴方法在其run方法中不包含任何内容,因此在另一个线程上没有任何内容可以运行。因此,您的线程一开始什么都不做。

Thread.sleep方法是一种静态方法,它将当前线程“休眠”一段时间。它不能用于将其他线程置于睡眠状态。。。就像你试图做的那样

如果您希望子线程定期休眠,那么对
sleep
的调用需要由相应的线程自己进行;e、 g.在相应的
run()
方法中

为了它的价值。。。一个线程没有安全的方法使另一个线程休眠或暂停。有一个不推荐使用的API用于暂停另一个线程,但它存在许多安全问题,不应使用


还有一个问题。在实例化这些类时,将运行放入构造函数中的逻辑。当您“新建”
外螺纹
内螺纹
对象时,会在主线程上发生这种情况。您希望该代码在子线程中运行。。。当他们已经开始


您的
Male
Female
类需要实现
Runnable.run()
方法,这就是线程逻辑需要实现的地方。

如果您遵循这些指导原则,您的代码将更具可读性:我不知道为什么,但我看到了这个问题的“其他”图像:您的代码有几个问题-您的本地
m
f
没有修改,因此您的主
if(m>f)
语句将始终为真在这种情况下,您的线程甚至可能在到达这些语句之前完成,
Thread.sleep()
会导致当前正在执行的线程睡眠(而不是您调用方法的线程)。作为Runnable的直接子类,您可能指的是“implement”,因为
Runnable
是一个接口,不是抽象类。如果使用实例调用
sleep
,应该会收到编译器警告。如果没有,请检查编译器设置并启用所有警告。
public class A implements Runnable {

    public void run(){
    }

    public static void main(String[] args)throws InterruptedException {
        int n = 3;
        int m = 17;
        int f = 13;

        Thread th1 = new Thread(new male(m,n));

        Thread th2 = new Thread(new female(f,n));

        th1.start();
        th2.start();

        //not working
        if (m>f){
                th2.sleep(1000);
        }
        else if(f>m){
                th1.sleep(1000);    
        }
    }

}
class male extends A {

    public male(int male, int count){
        while(male>0){
            male -= count;
            System.out.println("m: " + male);
        }
    }
}
class female extends A {

    public female(int female, int count){
        while(female>0){
            female -= count;
            System.out.println("f: " + female);
        }
    }
}