gpt4 book ai didi

Java 多线程 : positioning of methods

转载 作者:行者123 更新时间:2023-11-29 05:43:38 25 4
gpt4 key购买 nike

我为记录用户 Activity 的程序编写了一个插件。如果用户按下一个按钮并因此触发一个 Action ,一些东西应该被写入数据库。这个过程应该并行运行,因为它不应该延迟触发的 Action :

if (con != null) {
SmartClientKernel.addPooledTask(new Runnable() {
@Override
public void run() {
ActionDispatcher.getInstance().addDispatchExtension(new IDispatchExtension() {
@Override
public void preprocessActionExecution(RPAction action) {
Calendar cal = Calendar.getInstance();
Date startTime = cal.getTime();
String actionName = action.getName();
java.sql.Timestamp sqlTime = new java.sql.Timestamp(startTime.getTime());
UUID id = UUID.randomUUID();
PreparedStatement statement;
try {
statement = con.prepareStatement("INSERT INTO " + tableName
+ " (ID, USERNAME, SESSIONID, PROJECTNAME, STARTTIME, ACTIONTYPE, ACTIONNAME) VALUES (?,?,?,?,?,?,?)");
statement.setString(1, id.toString());
statement.setString(2, userName);
statement.setString(3, sessionId);
statement.setString(4, projectName);
statement.setTimestamp(5, sqlTime);
statement.setString(6, "Action");
statement.setString(7, actionName);
statement.execute();
statement.close();
} catch (SQLException e) {
Log.getLogger().log(Level.SEVERE, e.getMessage(), e);
}

}
});
}
});
}

实际上,它工作正常,但我想知道这样的编程风格是否合适,因为我可以移动 block :

SmartClientKernel.addPooledTask(new Runnable() {
@Override
public void run() {

进入 preprocessActionExecution() 方法,它似乎也有效。

大家怎么看?

更新:感谢你们的反馈!

最佳答案

我一直觉得,如果一段代码可以有自己的名字,那么它应该有自己的名字

或者,换句话说,如果它看起来像一个类并且表现得像一个类,那么它应该是一个类

所以 - 回答你的问题 - 在我看来,每个匿名内部类都应该是独立的类。尽管它们不需要是公共(public)类,它们可以作为 static 内部类,但它们应该被分解并有一个名字。

此外 - 您准备好的声明应该在其他地方准备。根据使用准备它是浪费时间。

关于Java 多线程 : positioning of methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16604847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com