You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:04:33