Java ThreadLocal示例出错
我开始学习如何使用Java,并在java2s.com上看到了本教程。它处理的是局部变量。我试着把它插入到我的编译器中,但在Java ThreadLocal示例出错,java,Java,我开始学习如何使用Java,并在java2s.com上看到了本教程。它处理的是局部变量。我试着把它插入到我的编译器中,但在新线程(Main::run).start()时它会结巴部分。我不明白为什么它不想编译。我对Java不够精通,不知道是否应该使用该方法来创建新线程。任何帮助都将不胜感激。下面是完整的代码示例 public class Main { public static void main(String[] args) { new Thread(Main::run).star
新线程(Main::run).start()时它会结巴代码>部分。我不明白为什么它不想编译。我对Java不够精通,不知道是否应该使用该方法来创建新线程。任何帮助都将不胜感激。下面是完整的代码示例
public class Main {
public static void main(String[] args) {
new Thread(Main::run).start();
new Thread(Main::run).start();
}//from ww w . j a v a2s . co m
public static void run() {
int counter = 3;
System.out.println(Thread.currentThread().getName()+ " generated counter: " + counter);
for (int i = 0; i < counter; i++) {
CallTracker.call();
}
}
}
class CallTracker {
private static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>();
public static void call() {
int counter = 0;
Integer counterObject = threadLocal.get();
if (counterObject == null) {
counter = 1;
} else {
counter = counterObject.intValue();
counter++;
}
threadLocal.set(counter);
String threadName = Thread.currentThread().getName();
System.out.println("Call counter for " + threadName + " = " + counter);
}
}
公共类主{
公共静态void main(字符串[]args){
新线程(Main::run).start();
新线程(Main::run).start();
}//来自ww w.j a v a2s.co m
公共静态无效运行(){
int计数器=3;
System.out.println(Thread.currentThread().getName()+“生成的计数器:”+计数器);
对于(int i=0;i
此代码可编译并将运行。我甚至亲自运行它来验证…因为为什么不
您遇到问题的原因可能是您的编译器设置为在Java1.8之前解释java。“Main::run”部分是从1.8开始的新功能。即使您使用的是1.8JDK,您的编译器也可能被设置为编译到早期版本
检查您的ide使用的级别,并确保其设置正确。ThreadLocal
实际上与您遇到的问题无关。试着摆脱CallTracker
和run()
的主体,看看是否仍然存在同样的问题;我猜你会的。这是一段小得多的代码,可供您寻求帮助。