Java 将数据插入数据库正在冻结我的应用程序

Java 将数据插入数据库正在冻结我的应用程序,java,database,timer,freeze,swingworker,Java,Database,Timer,Freeze,Swingworker,我有一节有计时器的课。此类正在为我的点数组添加新项。这些点正在移动,我正在重新绘制一个面板,把它们画在新的位置。我已连接到数据库sqlite。当我调用插入函数向表中添加点时-应用程序冻结1s 我想问,有没有办法不停止画画/重画?我希望插入操作将在后台进行 有什么想法吗 Ps:我听说过swing worker,但idk适合我的情况吗 编辑: 类生成器{ 改变听众; ArrayList s; JPanel p; 定时器发生器; MyB数据库; 公共生成器(){ this.s=新的ArrayList(

我有一节有计时器的课。此类正在为我的点数组添加新项。这些点正在移动,我正在重新绘制一个面板,把它们画在新的位置。我已连接到数据库sqlite。当我调用插入函数向表中添加点时-应用程序冻结1s

我想问,有没有办法不停止画画/重画?我希望插入操作将在后台进行

有什么想法吗

Ps:我听说过swing worker,但idk适合我的情况吗

编辑:

类生成器{
改变听众;
ArrayList s;
JPanel p;
定时器发生器;
MyB数据库;
公共生成器(){
this.s=新的ArrayList();
this.b=新的MyDatabase();
generatorTimer=新计时器(40,新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
addItem();
p、 重新油漆();
}
});
generatorTimer.start();
}
私有void addItem(){
字符串newString=新字符串(“sampleText”);
s、 添加(新闻字符串);
b、 插入(新闻字符串);//插入数据库中的新项
stateChanged(newchangeEvent(this));
}
公共无效设置面板(JPanel p){
这个,p=p;
}
公共数组列表getArray(){
返回s;
}   
公共void addListener(ChangeListener列表){
this.listener=list;
}
}

你能给我举个例子,如何用一个SwingWorker替换我的
计时器吗?

将你的addItem方法更改为如下:

private void addItem() {
    final String newString = new String("sampleText");
    s.add(newString);
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            // inserting new item to database
            b.insert(newString);
        }
    };
    new Thread(runnable).start();
    listener.stateChanged(new ChangeEvent(this));
}

对你必须使用Swing worker。@Makky你有使用它的例子吗?你将如何在我的情况下实现它?@Makky编辑,我发布了代码,你能给我一个例子,如何用swing worker替换我的计时器吗?
private void addItem() {
    final String newString = new String("sampleText");
    s.add(newString);
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            // inserting new item to database
            b.insert(newString);
        }
    };
    new Thread(runnable).start();
    listener.stateChanged(new ChangeEvent(this));
}