recuperar puede programa para los leer jpg gratis found esta eliminar directorio dela daƱado con como chk carpeta archivos archivo java multithreading ftp snmp

java - puede - Use el subprocesamiento para procesar el fragmento de archivo por fragmento



recuperar archivos de carpeta found (2)

Tengo una lista de arrays que consta de 5000 direcciones IP. Para cada dirección IP, deseo ejecutar una solicitud SNMPGet y un comando FTPDownload. Quiero implementarlo de una manera, en la que en un momento 2 hilos diferentes se ejecutan simultáneamente para las primeras cinco direcciones IP. Después de la ejecución de estas direcciones IP, las siguientes 2 direcciones IP se ejecutarán en estos hilos. ¿Alguien puede ayudarme a cómo hacerlo?

Aquí, la conexión es una clase que extiende el hilo y el trabajo que se implementará está escrito en su método run (). Por favor ayuda.

Connection newConnection =new Connection(0); Connection newConnection1 =new Connection(1); for(int i = 0; i < NE_list.getRowCount(); i=i+2) { if(NE_list.getValueAt(i, 0).toString().equals("true")) //Some condition here for the IP Address { newConnection.i=i; newConnection1.i=i+1; newConnection.runprogram(); newConnection1.runprogram(); } } class Connection extends Thread{ int i; Connection(int val){ i=val; } void runprogram(){ start(); } public void run(){ //SNMP and FTP Code here for IP Address in index i of NE_list } }


Executor Framework será la mejor opción para su solución. He creado un ejemplo aquí. Puede aumentar la cantidad de hilos según su requerimiento.

import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; class SomeRunnable implements Runnable { int threadNo = -1 ; List<String> list = new ArrayList<String>(); public SomeRunnable(List list, int threadNo ) { this.list.addAll(list); this.threadNo =threadNo; } @Override public void run() { for (String element : list) { System.out.println("By Thread:" + threadNo+", Processed Element:" +element); } } } public class ExecutorDemo { public static void main(String[] args) { List<String> list = new ArrayList<String>(); for (int i = 0; i < 100; i++) { list.add("Elem:"+i); } // Divide list int divideIndex = list.size()/2; //Create objects of Runnable SomeRunnable obj1 = new SomeRunnable(list.subList(0, divideIndex),1); SomeRunnable obj2 = new SomeRunnable(list.subList(divideIndex,list.size()),2); //Create fixed Thread pool, here pool of 2 thread will created ExecutorService pool = Executors.newFixedThreadPool(2); pool.execute(obj1); pool.execute(obj2); pool.shutdown(); } }


Adjunto agregando un ejemplo de trabajo con 5 hilos. Simplemente coloque el archivo test.txt en su CLASS_PATH de la aplicación.

class MyRunnable implements Runnable { List<List<String>> records; MyRunnable(List<List<String>> records){ this.records = records; } public void run(){ for(List list : records){ System.out.println(Thread.currentThread().getName() + " : "+list.toString()); } }}

Clase principal -

public class FileProcessThreads { public List<List<String>> process(String fileName) throws IOException { List<List<String>> records = new ArrayList<>(); BufferedReader br = new BufferedReader(new FileReader(fileName)); String line = null; while((line = br.readLine()) != null){ List<String> listValues = Arrays.asList(line.split(" ")); records.add(listValues); } System.out.println(records.size()); return records; } public static void main(String[] args) throws IOException { FileProcessThreads fp = new FileProcessThreads(); List<List<String>> records = fp.process("test.txt"); ExecutorService es = Executors.newFixedThreadPool(5); int recordsInEachThread = (int) (records.size()/5); System.out.println(recordsInEachThread); MyRunnable my1 = new MyRunnable(records.subList(0, recordsInEachThread)); MyRunnable my2 = new MyRunnable(records.subList(recordsInEachThread+1, recordsInEachThread*2)); MyRunnable my3 = new MyRunnable(records.subList(recordsInEachThread*2 + 1, recordsInEachThread*3)); MyRunnable my4 = new MyRunnable(records.subList(recordsInEachThread*3 + 1, recordsInEachThread*4)); MyRunnable my5 = new MyRunnable(records.subList(recordsInEachThread*4 + 1, records.size() - 1)); es.execute(my1); es.execute(my2); es.execute(my3); es.execute(my4); es.execute(my5); es.shutdown(); }}