¿Existe un límite superior en el número de subprocesos de Swing Worker que se pueden ejecutar o en la medida en que la memoria es compatible? También es esto configurable en alguna parte?¿Cuál es la cantidad máxima de subprocesos de trabajo oscilante que se pueden ejecutar?
Respuesta
A SwingWorker
no es un hilo en sí, sino una tarea que se ejecutará en un hilo. Usualmente, usaría un ExecutorService
para ejecutar instancias de SwingWorker
; Esta interfaz también permite establecer el número de hilos:
int n = 20; // Maximum number of threads
ExecutorService threadPool = Executors.newFixedThreadPool(n);
SwingWorker w; //don't forget to initialize
threadPool.submit(w);
Ahora, si usted presentar más de n SwingWorker
casos, van a tener que hacer cola y esperar hasta que un hilo de la piscina se pone a disposición.
Así que está diciendo teóricamente que puedo ejecutar cualquier cantidad de tareas de Swing Worker siempre que ejecute hilos individuales para cada una de ellas. –
En principio sí; por supuesto, la potencia de cálculo será un problema. – mort
umm .... ¿qué? ¿por qué harías esto? SwingWorker tiene su propia agrupación cuyo valor predeterminado es el tamaño 10, y cuando invoca 'SwingWorker # execute()' planifica la tarea. Programa este SwingWorker para su ejecución en una cadena de trabajo. Hay una cantidad de hilos de trabajo disponibles.: Https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html#execute() ... hacer esto usted mismo está reinventando la rueda. 'SwingWorker' fue una utilidad creada por lo que no tendrías que hacer esto. La única razón por la que harías esto sería si el tamaño de grupo predeterminado de 10 fuera demasiado pequeño, y en ese momento usarías un 'Ejecutable' sin procesar – searchengine27
final int corePoolSize = 100;
final int maximumPoolSize = 100;
final long keepAliveTime = 100000;
final TimeUnit unit = TimeUnit.SECONDS;
final BlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<>(maximumPoolSize);
sun.awt.AppContext.getAppContext().put(SwingWorker.class,
new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue));
El ejemplo de código anterior le permitirá tener más que el número predeterminado de ejecución de SwingWorkers. Por supuesto, está accediendo a alguna clase backdoor sun.awt.AppContext, pero es una solución rápida para los interesados, y no puede/está dispuesto a proporcionar su propio ExecutorService.
- 1. Cuál es la cantidad máxima de caracteres que se pueden almacenar en una propiedad de Windows Installer
- 2. ¿Cuál es la cantidad máxima de subprocesos en Windows Server 2003?
- 3. ¿Cuál es la cantidad máxima de archivos por jarra?
- 4. ¿Cuál es la cantidad máxima de filas que puede almacenar una única tabla de SQL Server?
- 5. ¿Hay una cantidad máxima de caracteres que se pueden escribir con StreamWriter?
- 6. ¿Cuál es la cantidad máxima de parámetros permitidos por tipo de proveedor de base de datos?
- 7. ¿Cuál es la cantidad máxima de caracteres que va a contener nvarchar (MAX)?
- 8. ¿Cuál es la cantidad máxima de registros que puede almacenar una tabla MySQL?
- 9. ¿Cuál es la cantidad máxima de conexiones simultáneas que hará un navegador?
- 10. ¿Cuál es la cantidad máxima de argumentos en una función de Python?
- 11. ¿Cuál es el mayor número de subprocesos que es razonable ejecutar simultáneamente en Jmeter?
- 12. Cantidad razonable de subprocesos para el grupo de subprocesos que ejecuta solicitudes de servicio web
- 13. ¿Cuál es la mejor respuesta para la búsqueda de la máxima cantidad posible de una matriz
- 14. Cantidad máxima de caracteres de TextBox (no es MaxLength)
- 15. Obtiene la cantidad de desplazamiento HorizontalScrollView máxima
- 16. En un tipo de cambio de divisa, ¿cuál es la cantidad máxima de decimales utilizada?
- 17. ¿Cuál es la cantidad máxima de conexiones simultáneas de TCP/IP de Windows?
- 18. ¿Cuál es la demora máxima para setInterval?
- 19. ¿Cuántos hilos (o elementos de trabajo) se pueden ejecutar al mismo tiempo?
- 20. ¿Cuál es la cantidad máxima de volúmenes adjuntos por instancia de Amazon EC2?
- 21. ¿Cuál es la cantidad máxima de elementos o tamaño de archivo para un documento HTML?
- 22. ¿Cuál es la cantidad máxima de espacios de claves en Cassandra?
- 23. Cuál es la cantidad máxima de hilos disponibles en Asp.net ThreadPool
- 24. Cantidad máxima de objetos en NSArray
- 25. ¿Cuál es la cantidad máxima de redirecciones HTTP permitidas por todos los principales navegadores?
- 26. ¿Cuál es la cantidad máxima de dimensiones permitidas para una matriz en C++?
- 27. ¿Cuál es la longitud máxima de una propiedad de lista?
- 28. ¿Cuál es la capacidad de almacenamiento máxima de Core Data?
- 29. ¿Cuál es la cantidad máxima de archivos permitidos en un directorio HDFS?
- 30. ¿Cuál es la cantidad máxima de combinaciones permitidas en SQL Server 2008?
Creo que un punto confuso con SwingWorkers es que el método SwingWorker.execute() ejecuta los trabajadores en un grupo de subprocesos predeterminado/privado, que se repara en un número bajo de subprocesos. Esto es probablemente suficiente y razonable para aplicaciones pequeñas/simples. Sin embargo, haga dos observaciones para tener más control sobre la concurrencia: 1. SwingWorkers son RunnableFutures 2. SwingWorkers NO debe ejecutarse llamando al método SwingWorker.execute(). Por lo tanto, solo configure su propio grupo de subprocesos (ExecutorService) configurado según sus necesidades, y luego envíe() o ejecute() SwingWorkers allí. –