调试报错,但是在错误堆栈中点击到具体类时,提示** is not a valid line number,然后再class File Editor中,也是提示source not found,有朋友遇到过这个问题吗?Eclipse和具体工程的Compiler都设置成1.6,引用的jdk也是1.6的。但是这个类明明是存在的,包名也绝对正确。当前工作空间只有这一个项目,不存在重名不同包的类。
求有类似问题的朋友解答,谢谢!
调试报错,但是在错误堆栈中点击到具体类时,提示** is not a valid line number,然后再class File Editor中,也是提示source not found,有朋友遇到过这个问题吗?Eclipse和具体工程的Compiler都设置成1.6,引用的jdk也是1.6的。但是这个类明明是存在的,包名也绝对正确。当前工作空间只有这一个项目,不存在重名不同包的类。
求有类似问题的朋友解答,谢谢!
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题可能是由于多个线程同时访问同一个资源导致的。在Java中,当多个线程尝试访问同一个对象或资源时,可能会发生竞态条件(race condition)。这种情况通常会导致数据不一致或者程序崩溃。
为了解决这个问题,你可以采取以下几种方法:
public class MyClass {
private int value;
public synchronized void setValue(int val) {
this.value = val;
}
public synchronized int getValue() {
return this.value;
}
}
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class MyClass {
private int value;
private Lock lock = new ReentrantLock();
public synchronized void setValue(int val) {
lock.lock();
try {
this.value = val;
} finally {
lock.unlock();
}
}
public synchronized int getValue() {
lock.lock();
try {
return this.value;
} finally {
lock.unlock();
}
}
}
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class MyClass {
private int value;
private ReadWriteLock rwl = new ReentrantReadWriteLock();
public synchronized void setValue(int val) {
rwl.writeLock().lock();
try {
this.value = val;
} finally {
rwl.writeLock().unlock();
}
}
public synchronized int getValue() {
rwl.readLock().lock();
try {
return this.value;
} finally {
rwl.readLock().unlock();
}
}
}
避免多线程访问:如果可能的话,尽量避免让多个线程同时访问同一份资源。例如,如果你有一个数据库连接池,那么应该确保只有一个线程在运行,并且只允许一个线程进行查询。
使用并发编程工具:有一些专门的工具可以帮助你在多线程环境中处理并发问题,比如Spring的AOP、AspectJ等。
希望以上建议能帮助你解决这个问题!