java多线程应用程序更新数据库
我有一个数据库,其中有100个条目需要更新某些表列条目 它是动态的,需要更新 基本上所有的100个条目都是从磁盘收集数据的 并更新数据库表。为了获取数据库/磁盘信息,他们 必须获得锁,直到在while循环中获得锁为止。 一旦获得锁,他们只能将最新的diskinfo更新到DB 我有一个下面的pesudo代码,它基本上按顺序完成上述工作。 我想以多线程的方式运行它们,以便可以完成并行工作。 你能给我介绍一下吗?我对java多线程程序完全不熟悉 提前感谢你的帮助java多线程应用程序更新数据库,java,database,multithreading,Java,Database,Multithreading,我有一个数据库,其中有100个条目需要更新某些表列条目 它是动态的,需要更新 基本上所有的100个条目都是从磁盘收集数据的 并更新数据库表。为了获取数据库/磁盘信息,他们 必须获得锁,直到在while循环中获得锁为止。 一旦获得锁,他们只能将最新的diskinfo更新到DB 我有一个下面的pesudo代码,它基本上按顺序完成上述工作。 我想以多线程的方式运行它们,以便可以完成并行工作。 你能给我介绍一下吗?我对java多线程程序完全不熟悉 提前感谢你的帮助 while(true) { for(
while(true)
{
for(int i=0,i<100;i++)
{
//Get the info from Disk
String diskInfo=getDiskInfo(i);
//Get the info from DB table
String dbInfo=getDBInfo(i);
if (! diskInfo.equals(dbInfo))
{
//Update DB with diskInfo
boolean status=UpdateDB(i);
}
}
sleep(2000);
}
//Get the info from Disk
public String getDiskInfo()
{
//Get the disk
//lock the disk wait if busy
while(true)
{
//get disk lock
sleep(2000);
}
//fetch data
String data = "test";
//unlock disk
return data;
}
public String getDBInfo()
{
//Get the DB
//lock the DB wait if busy
while(true)
{
//get DB lock
sleep(2000);
}
//fetch data
//select data from X;
String data = "test";
//unlock disk
return data;
}
public boolean UpdateDB()
{
//Get the DB
//lock the DB wait if busy
while(true)
{
//get DB lock
sleep(2000);
}
//fetch data
if(!getDiskInfo(),equals(getDBInfo())
{
//lock the DB wait if busy
while(true)
{
//get DB lock
sleep(2000);
}
status=UpdateDB();
}
else
{
//no update needed
status=false;
}
return status;
}
while(true)
{
对于(int i=0,i我不会为此编写代码。我会同步Java对象或使用数据库工具进行隔离,以完成您想要的操作。据我所知,您只需要一个循环(最外层的循环)多线程程序的工作原理与单线程程序类似,因为在所有地方都有无限循环不是一个好主意
我会有一个检查线程,在第一个循环中将任务添加到线程池中,并删除其余的任务
学习多线程概念
然后学习java多线程概念
然后学习java多线程
api java.util.concurrent
然后使用JavaAPI。确保使用最合适的类
多线程是很难的
sleep()调用和INIFIENT循环最好是用来填充的,因为如果您尝试使用多线程,您会发现令人不快的惊喜
也就是说,您的代码应该相对容易转换为多线程代码