Java调用Thread.start()报Identifier expected after this token错误的解决方法
解决线程启动时的Syntax Error问题
嘿,我一眼就看出问题所在啦!你遇到的这个错误,根源是把执行代码直接放在了类的顶级作用域里——Java的类结构规则里,类的根级别(也就是大括号里但不在任何方法、构造函数或者初始化块里)只能用来定义成员变量、方法、内部类这些“声明性”的内容,不能直接写thread1.start()这种“执行性”的语句。
修复方案:把代码放到方法/构造函数中
最常见的做法是把线程的创建和启动逻辑放到程序入口的main方法里,比如这样:
public class ThreadDemo { public static void main(String[] args) { // 定义线程1 Thread thread1 = new Thread() { @Override public void run() { // 在这里写thread1要执行的业务逻辑 System.out.println("线程1正在运行"); } }; // 定义线程2 Thread thread2 = new Thread() { @Override public void run() { // 在这里写thread2要执行的业务逻辑 System.out.println("线程2正在运行"); } }; // 启动线程 thread1.start(); thread2.start(); } }
如果这部分代码是属于某个类的实例行为,你也可以把它放到类的构造函数里:
public class ThreadDemo { public ThreadDemo() { Thread thread1 = new Thread() { @Override public void run() { // 线程逻辑 } }; Thread thread2 = new Thread() { @Override public void run() { // 线程逻辑 } }; thread1.start(); thread2.start(); } }
额外小提示
记得给run()方法加上@Override注解,这样能帮你避免拼写错误(比如写成Run()),也更符合Java编码规范哦~
内容的提问来源于stack exchange,提问作者user8286105
相关产品推荐
相关产品推荐

