gpt4 book ai didi

java - 如何在同一个程序中多次创建线程的新实例

转载 作者:行者123 更新时间:2023-11-30 06:23:48 25 4
gpt4 key购买 nike

我是新手,如果我不清楚我想要什么,请原谅我。我有一个 java 应用程序,它在单击提交后插入 2 个 mysql 表,一个在本地机器上,另一个在 Web 服务器上。问题是我创建了两个线程,每个线程一个。第一次启动应用程序时它工作正常,但是当应用程序运行并且我尝试通过单击提交再次插入时,它没有执行任何操作。再次,当我重新启动应用程序时,它第一次运行良好。我的问题是如何在我的应用程序的同一实例中停止线程或结束并启动它的新实例。

很抱歉,如果不清楚。

这是代码,

  final int m = MSfuntion.getmemomoc();

Thread t1 = new Thread(new Runnable(){
public void run()
{
while(runt1){

try{
for(int i=0;i<=jTable2.getRowCount();i++)
{
Object slno= jTable2.getValueAt(i, 1);
Object item2= jTable2.getValueAt(i, 2);
Object size2= jTable2.getValueAt(i, 3);

String it = slno.toString();
String si = item2.toString();
int qt = Integer.parseInt(size2.toString());

MSfuntion.saledetails(m,it, si, qt);
//MSfuntion.saledetailsweb(m,it, si, qt);
sc=0;
}
}catch(Exception e)
{
e.printStackTrace();
}
runt1=false;

}
}

});
Thread t2 = new Thread(new Runnable(){

public void run()
{
while(runt2){

try{
for(int i=0;i<=jTable2.getRowCount();i++)
{
Object slno= jTable2.getValueAt(i, 1);
Object item2= jTable2.getValueAt(i, 2);
Object size2= jTable2.getValueAt(i, 3);

String it = slno.toString();
String si = item2.toString();
int qt = Integer.parseInt(size2.toString());

//MSfuntion.saledetails(m,it, si, qt);
MSfuntion.saledetailsweb(m,it, si, qt);
sc=0;
}
}catch(Exception e)
{
e.printStackTrace();
}
runt2=false;
}
t1.start();
t2.start()

最佳答案

对我来说,这听起来不像是线程问题。听起来您在将数据写入两个表后没有提交写入或释放数据库连接。根据您将数据写入数据库的方式,它可能会与一个线程一起工作,但如果您从多个线程执行则不会。第一次运行时,第一个线程锁定了数据库,为第二次写入而创建的线程无法写入数据,因为第一个线程没有释放锁。

另一件事,与其每次有人点击按钮时产生两个线程,不如使用 ExecutorService 会好得多。

关于java - 如何在同一个程序中多次创建线程的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17856547/

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