3 回答
TA贡献1852条经验 获得超1个赞
java.util.concurrent比 Swing 工作者更便携。
使用执行器“单线程”确保作业是顺序的,尽快执行。
import java.sql.Connection;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class DatabaseLayer {
private Connection _connection;
public DatabaseLayer( /* some args here */ ) {
// _connection = ... use args
final ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit( this::create );
executor.submit( this::read );
}
void create() {
_connection = null;
System.err.println( "Create database..." );
}
void read() {
System.err.println( "Read database..." );
}
}
public class Main /* extends swing JFrame or javafx Application */ {
private DatabaseLayer _dbLayer;
public void start() {
_dbLayer = new DatabaseLayer(
/* get parameters from properties file or command line */);
}
public static void main( String[] args ) {
// create user interface from args
}
}
您可以使用不同的软件包:
db层:几个类
应用逻辑:每个业务逻辑转换一个
演示文稿:您可以在桌面(swing 或 javafx)或 web ui 之间进行选择
TA贡献1826条经验 获得超6个赞
更好的方法是使用 CompletableFuture (Java 8),使用此 API,您可以链接执行并仍然使用单独的线程-> https://www.baeldung.com/java-completablefuture
TA贡献2012条经验 获得超12个赞
实际上,我找到了一种更简单的方法来解决我的问题,我只是在创建表的类中手动创建了一个 JFrame,然后再将其处理掉,就像这样,主线程以顺序的方式继续正常。
添加回答
举报