Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我希望在不创建类(对象)实例的情况下运行此代码。可能吗?为什么不呢?_Java_Multithreading_Object_Constructor_Static - Fatal编程技术网

Java 我希望在不创建类(对象)实例的情况下运行此代码。可能吗?为什么不呢?

Java 我希望在不创建类(对象)实例的情况下运行此代码。可能吗?为什么不呢?,java,multithreading,object,constructor,static,Java,Multithreading,Object,Constructor,Static,我想在不创建对象的情况下运行这段代码…我让类A静态调用它而不使用对象,但仍然不知道如何调用它。 这段代码运行良好。我只是想知道是否有其他方法可以简单地执行此代码?不,如果不创建对象,就无法启动线程 通过实现Runnable,您应该重写此方法: public class Constructor_benifit{ public static void main(String[] args){ System.out.println("In primary Thread"); A a=n

我想在不创建对象的情况下运行这段代码…我让类A静态调用它而不使用对象,但仍然不知道如何调用它。
这段代码运行良好。我只是想知道是否有其他方法可以简单地执行此代码?

不,如果不创建对象,就无法启动线程

通过实现Runnable,您应该重写此方法:

public class Constructor_benifit{
public static void main(String[] args){
    System.out.println("In primary Thread");
    A a=new A("Test string for secondary thread");
    Thread thread_object=new Thread(a);
    thread_object.start();
}
static class A implements Runnable
{
    String to_print;
    public A(String to_print){
        this.to_print=to_print;
    }
    public void run(){
        System.out.println(to_print);
    }

}}
这个方法已经在Runnable接口中定义为虚拟(非静态)

如果希望在不实现Runnable接口的情况下创建线程,那么应该扩展thread类。它不提供启动和运行线程的静态方法。同样,您需要创建类A的实例

如果您只需要避免创建额外的对象,可以使用以下代码。 我们再次创建对象。但是只有一个物体而不是两个

public void run(){
我只是想知道是否有其他方法可以简单地执行这段代码

如果您只想以一种简单的方式执行它,您可以使用


你所说的“仍然没有做对”是什么意思?您是否遇到错误:请将其添加到问题中。如果你没有得到预期的行为,那么请解释你得到的行为和你期望的。A是一个静态类,但它的成员是实例成员。因此,为了使用这些,您需要实例化A@Stultuske如何实例化类A?我不明白,但A是A。因此,对于初始化线程,您需要实例化它
A.run()
将调用
run()
方法,但它不会启动thread@ParitoshBhatt要创建线程,必须通过调用构造函数初始化类。没有别的办法了谢谢你的回答。扩展
线程
几乎总是不好的。继承建立了一种“是一种”关系;派生类型“is-a”(其超类型)。因此,除非您的可运行“is-a”线程,否则最好将其设置为
runnable
,并将实例传递给vanilla
thread
类。
public class Constructor_benifit{
    public static void main(String[] args){
        System.out.println("In primary Thread");
        Thread thread_object=new A("Test string for secondary thread");
        thread_object.start();
    }
    static class A extends Thread
    {
        private String to_print;
        public A(String to_print){
            this.to_print=to_print;
        }
        public void run(){
            System.out.println(to_print);
        }

    }
}
public class TestClass{
    public static void main(String[] args){
        System.out.println("In primary Thread");
        String to_print = "Test string for secondary thread";
        Thread thread_object=new Thread(()->System.out.println(to_print));
        thread_object.start();
    }
}