【发布时间】:2014-12-31 12:57:13
【问题描述】:
我正在处理一个带有线程的项目。这是我主要课程的开始。
public class Main {
public static int firstIndex, secondIndex, thirdIndex, fourthIndex, fifthIndex;
然后我创建一个线程并覆盖它的 run() 函数。在 run() 中,我尝试将整数分配给我之前定义的静态整数变量。
cThread thread1 = new cThread(ant) {
@Override
public void run() {
try {
firstIndex = myAllocator.alloc(11, '1', this);
secondIndex = myAllocator.alloc(10, '2', this);
alloc() 函数内部返回正确的整数,但静态变量始终保持为 0,不会更改为函数返回的值。但是,如果我不将整数设为静态,则会出现以下错误:
Cannot make a static reference to the non-static field firstIndex.
我确信函数返回正确的值。问题是什么?非常感谢。
【问题讨论】:
-
试试 Main.firstIndex。
-
它不起作用,没有语法错误但它仍然保持在0。它也不会让我从静态变为普通整数。
-
请,please,PLEASE 阅读 一些 文档,了解 Java 中线程是如何工作的。您没有同步,也没有
volatile。您的代码不起作用,这绝对不足为奇。 -
@YaseenKhan 但是你当然可以。
-
您向我们展示的 run() 方法是在 内部
Main类的某处吗?还是在其他班级?程序中的任何地方是否还有其他名为firstIndex的变量?如果您可以向我们展示一个其他人可以编译和运行的小、完整程序,其他人会更容易帮助您。但是,如果您尝试这样做,您可能会自己找到答案。
标签: java eclipse multithreading static