0

我想int a在另一个类中使用 的值。我有一种方法可以访问a另一个类中的变量。我想使用该方法来获取值a并在我的主类中使用它。

public class Neram {

    private static int a;

    private static void timedel() {
    // TODO Auto-generated method stub
       for(int i=0;i<20000;i++)
       {
          try {
             Thread.sleep(1000);
          } catch (InterruptedException e){}
          a=a+1;
       }
    }
}

我想int a用作其他班级的计时器,然后在a变为 100 时执行代码。

我想要的只是使用一个方法并获取`a的值,然后像这样使用它:

if (a > 100) {
    // say time over
   if(a>150)
     // your taking too long
   if(a>200)
  // that s it Stop RIGHT now
}
4

5 回答 5

1

请使用TimerTaskHandler进行这些类型的工作。对您来说更容易。

对于 TimerTask:- http://enos.itcollege.ee/~jpoial/docs/tutorial/essential/threads/timer.html

来自处理程序:- http://examples.javacodegeeks.com/android/core/os/handler/android-handler-example/

如果您不喜欢尝试任何其他示例,以上只是示例。


处理程序句柄 = new Handler();

可运行可运行=新可运行(){

    @Override
    public void run() {
        //what ever you want to do...
    }
};

//如何调用任何方法,如 (onCreate)

处理 .postDelayed(runnable, 100);

*** *Timer 任务 public class JavaReminder { Timer timer;

public JavaReminder(int seconds) {
    timer = new Timer();  //At this line a new Thread will be created
    timer.schedule(new RemindTask(), seconds*1000); //delay in milliseconds
}

class RemindTask extends TimerTask {

    @Override
    public void run() {
        System.out.println("ReminderTask is completed by Java timer");
        timer.cancel(); //Not necessary because we call System.exit
        //System.exit(0); //Stops the AWT thread (and everything else)
    }
}

public static void main(String args[]) {
    System.out.println("Java timer is about to start");
    JavaReminder reminderBeep = new JavaReminder(5);
    System.out.println("Remindertask is scheduled with Java timer.");
}

}

输出 Java timer is about to start Remindertask 是用 Java timer 调度的。ReminderTask 由 Java 计时器完成 //这将在 5 秒后打印

于 2013-10-14T01:33:21.180 回答
0

使“int a”成为您尝试从中访问它的任何类的静态成员。只需使用 static 关键字来声明它。不过,重要的是要理解为什么这在 Java 中有效。因此,我强烈建议您快速阅读 Java 中的类成员和不同的访问修饰符。

http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

此外,如果您要从另一个线程内部访问 int a,请务必注意同步问题。

于 2013-10-14T00:34:47.643 回答
0
public class Neram {

    public static int a;

    private static void timedel() {
    // TODO Auto-generated method stub
       for(int i=0;i<20000;i++)
       {
          try {
             Thread.sleep(1000);
          } catch (InterruptedException e){}
          a=a+1;

             if (a>100)
              new Main1 (a);
       }
    }
}

将此文件与主类一起导入到包中并进行更改..您只是想要这个还是其他什么?

Main1 类必须有一个构造函数,如

Main1(int b)
于 2013-10-14T01:31:31.980 回答
0

一般可以注册一个回调方法,通过这个回调方法在不同线程之间共享变量值。但是为了访问线程之间的共享变量,您必须对其进行同步以进行保护。比如将其声明为 volatile,或者使用 AtomicInteger,或者创建一个锁。

于 2013-10-14T01:39:08.847 回答
0

似乎更简单的解决方案是Handler发送具有一定延迟量的消息,然后处理您的逻辑而不是让线程执行此操作...

于 2013-10-14T01:59:51.190 回答