У меня есть 10 идентификаторов в списке и 6 методов. Мне нужен каждый идентификатор в 6 методах.
Пример:
// передача 1-го идентификатора во все 6 методов, эти 6 методов должен работать параллельно
getBook1(1);
getBook2(1);
getBook3(1);
getBook4(1);
getBook5(1);
getBook6(1);
// передача 2-го идентификатора во всех 6 методах
getBook1(2);
getBook2(2);
getBook3(2);
getBook4(2);
getBook5(2);
getBook6(2);
.
.
.
// передача 10-го идентификатора во всех 6 методах
getBook1(10);
getBook2(10);
getBook3(10);
getBook4(10);
getBook5(10);
getBook6(10);
Когда я передать второй идентификатор во всех 6 методах, параллельно методы 1 идентификатора также должны работать параллельно.
Как и для всех этих 10 идентификаторов, 6 методов должны выполняться параллельно в java. Пожалуйста, помогите мне с решением.
Спасибо за ваш ответ. пожалуйста, проверьте обновленный код ниже.
public class TestClass {
DataSource ds = null;
Connection mysqlcon = null;
PreparedStatement mysqlstmt = null;
ResultSet mysqlrs=null;
public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {
TestClass tc = new TestClass();
List<String> idsList = tc.getIpadds();
ExecutorService executorService = Executors.newFixedThreadPool(idsList .size());
Method[] methods = TestClass.class.getMethods();
for (String id : idsList ) {
callbookMethod(executorService,id,methods);
}
}
private List<String> getIpadds() {
List<String> ipadds = new ArrayList<String>();
try {
// MySql Dash Board Connection
ds = MyDataSourceFactory.getDashBoardMySQLDataSource();
mysqlcon = ds.getConnection();
String sql="SELECT DISTINCT IPADD FROM atm_master_copy_3";
mysqlstmt = mysqlcon.prepareStatement(sql);
ResultSet mysqlrs =mysqlstmt.executeQuery();
while(mysqlrs.next()) {
ipadds.add(mysqlrs.getString(1));
}
}catch(SQLException e) {
e.printStackTrace();
}finally {
if(mysqlcon != null) {
try {
mysqlcon.close();
}catch(SQLException e) {
e.printStackTrace();
}
mysqlcon = null;
}
}
return ipadds;
}
public static void callbookMethod (ExecutorService executorService,final String id, final Method[] methods){
final TestClass testClass = new TestClass();
executorService.execute(new Runnable() {
@Override
public void run() {
for (Method method : methods) {
try {
String methodName = method.getName();
if (methodName.startsWith("update")) {
method.invoke(testClass,id);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
}
public void updateCMaster(String id) {
System.out.println("updateCMaster");
}
public void updateFMaster(String id) {
// Do Something
System.out.println("updateFMaster");
}
public void updateASMaster(int id) {
// Do Something
System.out.println("updateASMaster");
}
}
Я получаю 250 идентификаторов в списке.