静态方法中的Java多线程创建

时间:2017-10-08 20:16:46

标签: java multithreading static-methods

我是Java的新手(但我对C ++有一些了解),但我找不到现有主题的答案。

我有一个包含静态方法的公共类。这个创建了一些Threads,每个Threads实例化一个这个类的实例,每个实例都有一个阻塞处理。

我尝试添加一个Runnable作为这个类的一个字段,但我对如何正确地执行它有点困惑...

do.call(rbind,
        c(lapply(mydflist,
                 function(x) data.frame(c(x, sapply(setdiff(allNms, names(x)),
                                                    function(y) NA)))),
          make.row.names=FALSE))

1 个答案:

答案 0 :(得分:0)

您正尝试在不属于实例对象但属于该类的方法中访问实例变量(即属于对象的变量)。 static函数和变量是类全局的,但不能从实例访问变量,因为没有隐式this

class Foo {
  private int value = 2;
  private static int woz = 6;

  public void foo() {
    System.out.println(value); // ok, access instance variable in instance method with implicit this object
    System.out.println(woz); // ok, access 'class global' variable
  }


  public static void bar() { // is a 'class' method, not an instance method
     System.out.println(value); // can't because there is no 'this' object here
     System.out.println(woz); // ok, access 'class global' variable
 }