How to use multithreading for getting WhereUsed Objects?
Hi,
I have a list of parts and I want to get WhereUsed objects of them. As the data is very big , its taking too long time. so I want to implement multi threading .
This is my code :
for(WTPart part:setofparts)
{
/*ArrayList<Object> objectsList=new ArrayList<>();
objectsList.add(new HashSet<String>());
objectsList.add(new HashSet<String>());
objectsList.add(new ArrayList<String>());
getPartStructure(part, objectsList);
dataMap.put(part, objectsList);*/
}
private static ArrayList<Object> getPartStructure(WTPart part,ArrayList<Object> objectList )
{
try
{
ArrayList<String> set=new ArrayList<>();
QueryResult resultWhere=StructHelper.service.navigateUsedBy(part.getMaster(),true);
while (resultWhere.hasMoreElements())
{
Object object = (Object) resultWhere.nextElement();
if(object instanceof WTPart)
{
WTPart prt=(WTPart) object;
prt=(WTPart) VersionControlHelper.service.allIterationsOf(prt.getMaster()).nextElement();
if(!set.contains(prt.getNumber()))
{
set.add(prt.getNumber());
if(prt.isEndItem())
{
String vehicleFamily=getIBAValue(prt,"VehicleFamily_Abbreviation");
if(vehicleFamily!=null && !vehicleFamily.equals(""))
{
HashSet<String>familyList=(HashSet<String>)objectList.get(0);
familyList.add(vehicleFamily);
}
else
{
HashSet<String>UndisclosedFamilyList=(HashSet<String>)objectList.get(1);
UndisclosedFamilyList.add(prt.getNumber());
}
ArrayList<String>list=(ArrayList<String>)objectList.get(2);
list.add(prt.getNumber()+" "+vehicleFamily);
}else{
getPartStructure(prt,objectList);
}
}
}
}
}catch (Exception ex)
{
ex.printStackTrace();
}
return objectList;
}

