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,然后再將其處理掉,就像這樣,主線程以順序的方式繼續正常。
添加回答
舉報
