<prompt> Unda programu ya Java ambayo huchakata mkusanyiko mkubwa wa data kwa kutumia maandishi mengi. Programu inapaswa kusoma data kutoka kwa faili ya CSV, kufanya hesabu fulani kwenye kila safu mlalo k.m., jumla ya safu wima mahususi, na kuandika matokeo kwa faili nyingine ya CSV. Tumia mabwawa ya nyuzi na njia za kusawazisha ili kuhakikisha uchakataji mzuri.  <response>: Ili kuunda programu ya Java ambayo huchakata hifadhidata kubwa kwa kutumia multithreading, unaweza kufuata hatua hizi:1. Ingiza maktaba muhimu2. Unda darasa ili kuwakilisha data katika kila safu mlalo ya faili ya CSV3. Unda darasa linaloweza kutumika kufanya hesabu kwenye kila safu mlalo4. Soma faili ya ingizo ya CSV na uunde orodha ya vitu vinavyowakilisha safu mlalo5. Unda dimbwi la uzi na uwasilishe kazi za kuchakata kila safu6. Andika matokeo kwa faili ya CSV ya toweHapa kuna mfano wa utekelezaji: javaagiza java.io.BufferedReader;agiza java.io.FileReader;agiza java.io.FileWriter;agiza java.io.IOException;agiza java.util.ArrayList;agiza java.util.List;agiza java.util.concurrent.ExecutorService;agiza java.util.concurrent.Executors;agiza java.util.concurrent.TimeUnit;daraja la DataRow int safu1; int safu2; jumla ya int; Public DataRowint column1, int column2 safuwima1 hii safu1; safuwima2 hii safu2; utupu wa umma hesabuSum this.sum this.column1 this.column2; darasa RowProcessor hutumia Runnable Mstari wa data wa mwisho wa kibinafsi; Public RowProcessorDataRow dataRow this.dataRow DataRow; Batilisha utupu wa umma run dataRow.calculateSum; darasa la umma MultithreadedCSVProcessing Public tuli List readCSVString inputFile inarusha IOException List dataRows new ArrayList; jaribu BufferedReader br new BufferedReadermpya FileReaderinputFile Mstari wa kamba; wakati line br.readLine ! null Kamba maadili line.split,; int column1 Integer.parseIntmaadili0; int column2 Integer.parseIntmaadili1; dataRows.ongezadataRow mpyasafuwima1, safuwima2; rudisha dataRows; public tuli utupu writeCSVOrodha dataRows, String outputFile inarusha IOException jaribu Mwandishi wa FileWriter FileWriter mpyaoutputFile kwa safu ya DataRow: dataRows writer.writerow.column1 , row.column2 , row.sum n; public static void mainString args inarusha InterruptedException, IOException String inputFile input.csv; String outputFile output.csv; Orodha dataRows readCSVinputFile; Mtekelezaji wa Huduma Watekelezaji.newFixedThreadPool4; kwa safu ya DataRow: dataRows mtekelezaji.wasilishamchakato mlalosafu mpya; mtekelezaji.shutdown; executor.awaitTerminationLong.MAX_VALUE, TimeUnit.MILLISECONDS; andikaCSVdataRows, outputFile; Mfano huu unachukulia kuwa faili ya CSV ya kuingiza ina safu wima mbili za nambari kamili. Programu husoma faili ya ingizo, huunda orodha ya vitu vya DataRow, na kisha kuchakata kila safu mlalo kwa kutumia mkusanyiko wa nyuzi na nyuzi 4. Baada ya kuchakata safu mlalo zote, huandika matokeo kwa faili ya CSV ya pato.Hakikisha umebadilisha vigeu vya inputFile na outputFile na njia zinazofaa za faili za mfumo wako. 