Я новичок в параллельных вычислениях. Я работаю над Java в Apache Netbeans. Моя недавняя работа была посвящена семафорам с использованием Java-классов Semaphore и Thread. В этом смысле мне пришлось создать программу, которая с помощью индикаторов выполнения имитирует процесс доставки кредитной карты, который зависит от пяти подпроцессов (моделируемых с помощью потоков). Каждый подпроцесс имеет время, которое моделируется в программе, в данном случае с использованием метода сна из потоков. Реализация семафора заключается в постепенном увеличении панели general в зависимости от других процессов. Если один из них завершен, его можно заполнить на общей панели. Еще следует добавить, что подпроцессы также имеют соответствующие индикаторы выполнения. Моя проблема возникает в классах BarraGeneral и SubProceso, они представляют собой общий процесс и один подпроцесс. В их переопределенных методах запуска я симулирую время и, конечно же, рисую, но этого не происходит. Я могу сказать, что это действительно работает, потому что на консоли вы можете проверить отпечатки, проблема, как я уже сказал, в том, что столбцы не отражают этот прогресс, он просто меняется от 0% до 100%.
Я пытался решить эту проблему, уменьшив время симуляции сна, но проблема не в этом. Кроме того, я отладил, и столбцы фактически меняют свое значение на каждой итерации.
Код:
package espe.edu.ec.laboratorio1p2;
import java.util.ArrayList;
import java.util.concurrent.Semaphore;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JProgressBar;
/**
*
* @author DARÍO BENAVIDES
*/
public class BarraGeneral extends Thread{
private int id;
private Semaphore aportes;
private ArrayList porcentajes;
private int nHilos;
private JProgressBar bar;
BarraGeneral(int id, Semaphore aportes, ArrayList porcentajes, int nHilos, JProgressBar bar){
this.id = id;
this.aportes = aportes;
this.porcentajes = porcentajes;
this.nHilos = nHilos;
this.bar = bar;
}
@Override
public void run(){
int a;
for(int i = 0; i < nHilos; i++){
try {
aportes.acquire();
a = bar.getValue();
bar.setValue(a + porcentajes.get(i));
System.out.println(porcentajes.toString());
} catch (InterruptedException ex) {
Logger.getLogger(BarraGeneral.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
package espe.edu.ec.laboratorio1p2;
import java.util.ArrayList;
import java.util.concurrent.Semaphore;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JProgressBar;
import javax.swing.event.ChangeListener;
/**
*
* @author DARÍO BENAVIDES
*/
public class SubProceso extends Thread{
private Semaphore aportes;
private int id;
private int tiempo;
private int porcentaje;
private ArrayList porcentajes;
private JProgressBar bar;
SubProceso(Semaphore aportes, int id, int tiempo, int porcentaje, ArrayList porcentajes, JProgressBar bar){
this.aportes = aportes;
this.id = id;
this.tiempo = tiempo;
this.porcentaje = porcentaje;
this.porcentajes = porcentajes;
this.bar = bar;
}
@Override
public void run(){
for(int i = 1; i
Подробнее здесь: https://stackoverflow.com/questions/786 ... ng-on-java
Как я могу сделать индикатор выполнения с помощью JProgressBar из Swing в Java? ⇐ JAVA
Программисты JAVA общаются здесь
1719436132
Anonymous
Я новичок в параллельных вычислениях. Я работаю над Java в Apache Netbeans. Моя недавняя работа была посвящена семафорам с использованием Java-классов Semaphore и Thread. В этом смысле мне пришлось создать программу, которая с помощью индикаторов выполнения имитирует процесс доставки кредитной карты, который зависит от пяти подпроцессов (моделируемых с помощью потоков). Каждый подпроцесс имеет время, которое моделируется в программе, в данном случае с использованием метода сна из потоков. Реализация семафора заключается в постепенном увеличении панели [b]general[/b] в зависимости от других процессов. Если один из них завершен, его можно заполнить на общей панели. Еще следует добавить, что подпроцессы также имеют соответствующие индикаторы выполнения. Моя проблема возникает в классах BarraGeneral и SubProceso, они представляют собой общий процесс и один подпроцесс. В их переопределенных методах запуска я симулирую время и, конечно же, рисую, но этого не происходит. Я могу сказать, что это действительно работает, потому что на консоли вы можете проверить отпечатки, проблема, как я уже сказал, в том, что столбцы не отражают этот прогресс, он просто меняется от 0% до 100%.
Я пытался решить эту проблему, уменьшив время симуляции сна, но проблема не в этом. Кроме того, я отладил, и столбцы фактически меняют свое значение на каждой итерации.
Код:
package espe.edu.ec.laboratorio1p2;
import java.util.ArrayList;
import java.util.concurrent.Semaphore;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JProgressBar;
/**
*
* @author DARÍO BENAVIDES
*/
public class BarraGeneral extends Thread{
private int id;
private Semaphore aportes;
private ArrayList porcentajes;
private int nHilos;
private JProgressBar bar;
BarraGeneral(int id, Semaphore aportes, ArrayList porcentajes, int nHilos, JProgressBar bar){
this.id = id;
this.aportes = aportes;
this.porcentajes = porcentajes;
this.nHilos = nHilos;
this.bar = bar;
}
@Override
public void run(){
int a;
for(int i = 0; i < nHilos; i++){
try {
aportes.acquire();
a = bar.getValue();
bar.setValue(a + porcentajes.get(i));
System.out.println(porcentajes.toString());
} catch (InterruptedException ex) {
Logger.getLogger(BarraGeneral.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
package espe.edu.ec.laboratorio1p2;
import java.util.ArrayList;
import java.util.concurrent.Semaphore;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JProgressBar;
import javax.swing.event.ChangeListener;
/**
*
* @author DARÍO BENAVIDES
*/
public class SubProceso extends Thread{
private Semaphore aportes;
private int id;
private int tiempo;
private int porcentaje;
private ArrayList porcentajes;
private JProgressBar bar;
SubProceso(Semaphore aportes, int id, int tiempo, int porcentaje, ArrayList porcentajes, JProgressBar bar){
this.aportes = aportes;
this.id = id;
this.tiempo = tiempo;
this.porcentaje = porcentaje;
this.porcentajes = porcentajes;
this.bar = bar;
}
@Override
public void run(){
for(int i = 1; i
Подробнее здесь: [url]https://stackoverflow.com/questions/78674483/how-can-i-do-a-progressive-bar-with-jprogressbar-from-swing-on-java[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия