У меня есть БД, которая имеет 100 записей, необходимо обновить определенную запись столбца таблицы
который динамически требует обновления.
По сути, все 100 записей, которые они собирают данные с диска
и обновите таблицы БД. Чтобы получить информацию о БД / диске, они
должен получить блокировку, которая пытается, пока не получит блокировку в цикле while.
Как только они получат блокировку, обновлять только последнюю версию diskinfo до БД можно только в *. 1003 *
У меня есть следующий псевдо-код, который по существу выполняет вышеуказанную работу последовательно.
Я хочу запустить их многопоточно, чтобы можно было выполнять параллельную работу.
Не могли бы вы помочь мне. Я совершенно новичок в многопоточной Java-программе.
Спасибо заранее за вашу помощь.
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;
}