Compare commits
No commits in common. "1e899d7e62db276c8df530181301972a3ac3c679" and "cc8f445dc0aaee745ba457c21f2c9784ae2242a1" have entirely different histories.
1e899d7e62
...
cc8f445dc0
@ -1,114 +0,0 @@
|
|||||||
/*
|
|
||||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
|
||||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
|
||||||
*/
|
|
||||||
|
|
||||||
package bandit.Model.Generator;
|
|
||||||
|
|
||||||
import bandit.Model.Zahlengenerator;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.concurrent.Flow.Subscriber;
|
|
||||||
import java.util.concurrent.SubmissionPublisher;
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
import bandit.util.OhmLogger;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author le
|
|
||||||
*/
|
|
||||||
public class Generator2 implements Runnable // Callable
|
|
||||||
{
|
|
||||||
private static Logger lg = OhmLogger.getLogger(); //Logger sollten immer static sein da sie für alle instanzen loggs ausführen
|
|
||||||
|
|
||||||
private Integer[] wert;
|
|
||||||
private volatile boolean laufend;
|
|
||||||
private ExecutorService eService;
|
|
||||||
|
|
||||||
private final Object LOCK;
|
|
||||||
|
|
||||||
private SubmissionPublisher<Integer[]> wertPublisher;
|
|
||||||
|
|
||||||
public Generator2(Zahlengenerator hauptgenerator)
|
|
||||||
{
|
|
||||||
wert = new Integer[2];
|
|
||||||
wert[0] = -1;
|
|
||||||
wert[1] = 2;
|
|
||||||
|
|
||||||
laufend = false;
|
|
||||||
eService = Executors.newSingleThreadExecutor();
|
|
||||||
wertPublisher = new SubmissionPublisher<>();
|
|
||||||
this.addWertSubscription(hauptgenerator);
|
|
||||||
LOCK = new Object();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addWertSubscription(Subscriber<Integer[]> subscriber)
|
|
||||||
{
|
|
||||||
wertPublisher.subscribe(subscriber);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void start()
|
|
||||||
{
|
|
||||||
laufend = true;
|
|
||||||
synchronized (LOCK)
|
|
||||||
{
|
|
||||||
LOCK.notifyAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (eService.isShutdown())
|
|
||||||
{
|
|
||||||
eService = Executors.newSingleThreadExecutor();
|
|
||||||
}
|
|
||||||
eService.execute(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void stop()
|
|
||||||
{
|
|
||||||
synchronized(LOCK){
|
|
||||||
laufend = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
while (!laufend)
|
|
||||||
{
|
|
||||||
synchronized (LOCK)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
lg.info("WAIT_Gen2");
|
|
||||||
LOCK.wait();
|
|
||||||
}
|
|
||||||
catch (InterruptedException ex)
|
|
||||||
{
|
|
||||||
lg.warning(ex.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Thread.sleep(100);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
System.err.println(ex);
|
|
||||||
}
|
|
||||||
this.berechneWert();
|
|
||||||
wertPublisher.submit(wert);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private synchronized void berechneWert()
|
|
||||||
{
|
|
||||||
wert[0] = (int) (1 + 6*Math.random());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,114 +0,0 @@
|
|||||||
/*
|
|
||||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
|
||||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
|
||||||
*/
|
|
||||||
|
|
||||||
package bandit.Model.Generator;
|
|
||||||
|
|
||||||
import bandit.Model.Zahlengenerator;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.concurrent.Flow.Subscriber;
|
|
||||||
import java.util.concurrent.SubmissionPublisher;
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
import bandit.util.OhmLogger;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author le
|
|
||||||
*/
|
|
||||||
public class Generator3 implements Runnable // Callable
|
|
||||||
{
|
|
||||||
private static Logger lg = OhmLogger.getLogger(); //Logger sollten immer static sein da sie für alle instanzen loggs ausführen
|
|
||||||
|
|
||||||
private Integer[] wert;
|
|
||||||
private volatile boolean laufend;
|
|
||||||
private ExecutorService eService;
|
|
||||||
|
|
||||||
private final Object LOCK;
|
|
||||||
|
|
||||||
private SubmissionPublisher<Integer[]> wertPublisher;
|
|
||||||
|
|
||||||
public Generator3(Zahlengenerator hauptgenerator)
|
|
||||||
{
|
|
||||||
wert = new Integer[2];
|
|
||||||
wert[0] = -1;
|
|
||||||
wert[1] = 3;
|
|
||||||
|
|
||||||
laufend = false;
|
|
||||||
eService = Executors.newSingleThreadExecutor();
|
|
||||||
wertPublisher = new SubmissionPublisher<>();
|
|
||||||
this.addWertSubscription(hauptgenerator);
|
|
||||||
LOCK = new Object();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addWertSubscription(Subscriber<Integer[]> subscriber)
|
|
||||||
{
|
|
||||||
wertPublisher.subscribe(subscriber);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void start()
|
|
||||||
{
|
|
||||||
laufend = true;
|
|
||||||
synchronized (LOCK)
|
|
||||||
{
|
|
||||||
LOCK.notifyAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (eService.isShutdown())
|
|
||||||
{
|
|
||||||
eService = Executors.newSingleThreadExecutor();
|
|
||||||
}
|
|
||||||
eService.execute(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void stop()
|
|
||||||
{
|
|
||||||
synchronized(LOCK){
|
|
||||||
laufend = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
while (!laufend)
|
|
||||||
{
|
|
||||||
synchronized (LOCK)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
lg.info("WAIT_Gen3");
|
|
||||||
LOCK.wait();
|
|
||||||
}
|
|
||||||
catch (InterruptedException ex)
|
|
||||||
{
|
|
||||||
lg.warning(ex.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Thread.sleep(100);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
System.err.println(ex);
|
|
||||||
}
|
|
||||||
this.berechneWert();
|
|
||||||
wertPublisher.submit(wert);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private synchronized void berechneWert()
|
|
||||||
{
|
|
||||||
wert[0] = (int) (1 + 6*Math.random());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,111 +0,0 @@
|
|||||||
/*
|
|
||||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
|
||||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
|
||||||
*/
|
|
||||||
|
|
||||||
package bandit.Model;
|
|
||||||
|
|
||||||
import bandit.Model.Generator.Generator1;
|
|
||||||
import bandit.Model.Generator.Generator2;
|
|
||||||
import bandit.Model.Generator.Generator3;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.concurrent.Flow.Subscriber;
|
|
||||||
import java.util.concurrent.SubmissionPublisher;
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
import bandit.util.OhmLogger;
|
|
||||||
import java.util.concurrent.Flow;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author le
|
|
||||||
*/
|
|
||||||
public class Zahlengenerator implements Subscriber<Integer[]> // Callable
|
|
||||||
{
|
|
||||||
private static Logger lg = OhmLogger.getLogger(); //Logger sollten immer static sein da sie für alle instanzen loggs ausführen
|
|
||||||
|
|
||||||
private Flow.Subscription subscription;
|
|
||||||
private SubmissionPublisher<Integer[]> wertPublisher;
|
|
||||||
|
|
||||||
private Generator1 generator1;
|
|
||||||
private Thread thd1;
|
|
||||||
|
|
||||||
private Generator2 generator2;
|
|
||||||
private Thread thd2;
|
|
||||||
|
|
||||||
private Generator3 generator3;
|
|
||||||
private Thread thd3;
|
|
||||||
|
|
||||||
|
|
||||||
public Zahlengenerator()
|
|
||||||
{
|
|
||||||
wertPublisher = new SubmissionPublisher<>();
|
|
||||||
generator1 = new Generator1(this);
|
|
||||||
generator2 = new Generator2(this);
|
|
||||||
generator3 = new Generator3(this);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addWertSubscription(Subscriber<Integer[]> subscriber)
|
|
||||||
{
|
|
||||||
wertPublisher.subscribe(subscriber);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void start()
|
|
||||||
{
|
|
||||||
if(thd1==null){
|
|
||||||
thd1 = new Thread(generator1);
|
|
||||||
thd1.start();
|
|
||||||
}
|
|
||||||
if(thd2==null){
|
|
||||||
thd2 = new Thread(generator2);
|
|
||||||
thd2.start();
|
|
||||||
}
|
|
||||||
if(thd3==null){
|
|
||||||
thd3 = new Thread(generator3);
|
|
||||||
thd3.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
generator1.start();
|
|
||||||
generator2.start();
|
|
||||||
generator3.start();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void stop()
|
|
||||||
{
|
|
||||||
generator1.stop();
|
|
||||||
generator2.stop();
|
|
||||||
generator3.stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSubscribe(Flow.Subscription subscription) {
|
|
||||||
this.subscription = subscription;
|
|
||||||
this.subscription.request(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onNext(Integer[] item) {
|
|
||||||
this.wertPublisher.submit(item);
|
|
||||||
this.subscription.request(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onError(Throwable throwable) {
|
|
||||||
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onComplete() {
|
|
||||||
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -5,10 +5,6 @@
|
|||||||
|
|
||||||
package bandit;
|
package bandit;
|
||||||
|
|
||||||
import bandit.View.ZahlenView;
|
|
||||||
import bandit.Schnittstelle.WertAdapter;
|
|
||||||
import bandit.Schnittstelle.StartStopController;
|
|
||||||
import bandit.Model.Zahlengenerator;
|
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
|
|
||||||
@ -28,7 +24,6 @@ public class Start
|
|||||||
controller.registerEvents();
|
controller.registerEvents();
|
||||||
model.addWertSubscription(adapter);
|
model.addWertSubscription(adapter);
|
||||||
view.setVisible(true);
|
view.setVisible(true);
|
||||||
view.pack();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,10 +3,8 @@
|
|||||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package bandit.Schnittstelle;
|
package bandit;
|
||||||
|
|
||||||
import bandit.Model.Zahlengenerator;
|
|
||||||
import bandit.View.ZahlenView;
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
@ -3,10 +3,8 @@
|
|||||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package bandit.Schnittstelle;
|
package bandit;
|
||||||
|
|
||||||
import bandit.Model.Zahlengenerator;
|
|
||||||
import bandit.View.ZahlenView;
|
|
||||||
import java.util.concurrent.Flow;
|
import java.util.concurrent.Flow;
|
||||||
import java.util.concurrent.Flow.Subscriber;
|
import java.util.concurrent.Flow.Subscriber;
|
||||||
import java.util.concurrent.Flow.Subscription;
|
import java.util.concurrent.Flow.Subscription;
|
||||||
@ -15,7 +13,7 @@ import java.util.concurrent.Flow.Subscription;
|
|||||||
*
|
*
|
||||||
* @author le
|
* @author le
|
||||||
*/
|
*/
|
||||||
public class WertAdapter implements Subscriber<Integer[]>
|
public class WertAdapter implements Subscriber<Integer>
|
||||||
{
|
{
|
||||||
private ZahlenView view;
|
private ZahlenView view;
|
||||||
private Zahlengenerator model;
|
private Zahlengenerator model;
|
||||||
@ -32,25 +30,14 @@ public class WertAdapter implements Subscriber<Integer[]>
|
|||||||
{
|
{
|
||||||
this.subscription = subscription;
|
this.subscription = subscription;
|
||||||
this.subscription.request(1);
|
this.subscription.request(1);
|
||||||
|
//this.subscription.request(Long.MAX_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(Integer item[])
|
public void onNext(Integer item)
|
||||||
{
|
{
|
||||||
String strWert = String.valueOf(item[0]);
|
String strWert = String.valueOf(item);
|
||||||
|
view.getLblZahl().setText(strWert);
|
||||||
switch(item[1]){
|
|
||||||
case 1:
|
|
||||||
view.getLblZahl1().setText(strWert);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
view.getLblZahl2().setText(strWert);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
view.getLblZahl3().setText(strWert);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.subscription.request(1);
|
this.subscription.request(1);
|
||||||
}
|
}
|
||||||
|
|
@ -23,6 +23,20 @@
|
|||||||
|
|
||||||
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
|
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
|
||||||
<SubComponents>
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JLabel" name="lblZahl">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Liberation Sans" size="100" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="horizontalAlignment" type="int" value="0"/>
|
||||||
|
<Property name="text" type="java.lang.String" value="?"/>
|
||||||
|
</Properties>
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
|
||||||
|
<BorderConstraints direction="Center"/>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
</Component>
|
||||||
<Container class="javax.swing.JPanel" name="jPanel1">
|
<Container class="javax.swing.JPanel" name="jPanel1">
|
||||||
<Constraints>
|
<Constraints>
|
||||||
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
|
||||||
@ -44,58 +58,5 @@
|
|||||||
</Component>
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
<Container class="javax.swing.JPanel" name="jPanel2">
|
|
||||||
<Constraints>
|
|
||||||
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
|
|
||||||
<BorderConstraints direction="Center"/>
|
|
||||||
</Constraint>
|
|
||||||
</Constraints>
|
|
||||||
|
|
||||||
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
|
|
||||||
<SubComponents>
|
|
||||||
<Component class="javax.swing.JLabel" name="lblZahl1">
|
|
||||||
<Properties>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
|
||||||
<Font name="Liberation Sans" size="100" style="0"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="horizontalAlignment" type="int" value="0"/>
|
|
||||||
<Property name="text" type="java.lang.String" value="?"/>
|
|
||||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
|
||||||
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
|
|
||||||
<LineBorder/>
|
|
||||||
</Border>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JLabel" name="lblZahl2">
|
|
||||||
<Properties>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
|
||||||
<Font name="Liberation Sans" size="100" style="0"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="horizontalAlignment" type="int" value="0"/>
|
|
||||||
<Property name="text" type="java.lang.String" value="?"/>
|
|
||||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
|
||||||
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
|
|
||||||
<LineBorder/>
|
|
||||||
</Border>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JLabel" name="lblZahl3">
|
|
||||||
<Properties>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
|
||||||
<Font name="Liberation Sans" size="100" style="0"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="horizontalAlignment" type="int" value="0"/>
|
|
||||||
<Property name="text" type="java.lang.String" value="?"/>
|
|
||||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
|
||||||
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
|
|
||||||
<LineBorder/>
|
|
||||||
</Border>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
</SubComponents>
|
|
||||||
</Container>
|
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Form>
|
</Form>
|
@ -2,7 +2,7 @@
|
|||||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||||
* Click nbfs://nbhost/SystemFileSystem/Templates/GUIForms/JFrame.java to edit this template
|
* Click nbfs://nbhost/SystemFileSystem/Templates/GUIForms/JFrame.java to edit this template
|
||||||
*/
|
*/
|
||||||
package bandit.View;
|
package bandit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -10,27 +10,6 @@ package bandit.View;
|
|||||||
*/
|
*/
|
||||||
public class ZahlenView extends javax.swing.JFrame
|
public class ZahlenView extends javax.swing.JFrame
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the lblZahl1
|
|
||||||
*/
|
|
||||||
public javax.swing.JLabel getLblZahl1() {
|
|
||||||
return lblZahl1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the lblZahl2
|
|
||||||
*/
|
|
||||||
public javax.swing.JLabel getLblZahl2() {
|
|
||||||
return lblZahl2;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the lblZahl3
|
|
||||||
*/
|
|
||||||
public javax.swing.JLabel getLblZahl3() {
|
|
||||||
return lblZahl3;
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* @return the btnStart
|
* @return the btnStart
|
||||||
*/
|
*/
|
||||||
@ -52,7 +31,7 @@ public class ZahlenView extends javax.swing.JFrame
|
|||||||
*/
|
*/
|
||||||
public javax.swing.JLabel getLblZahl()
|
public javax.swing.JLabel getLblZahl()
|
||||||
{
|
{
|
||||||
return getLblZahl1();
|
return lblZahl;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -72,16 +51,18 @@ public class ZahlenView extends javax.swing.JFrame
|
|||||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
|
|
||||||
|
lblZahl = new javax.swing.JLabel();
|
||||||
jPanel1 = new javax.swing.JPanel();
|
jPanel1 = new javax.swing.JPanel();
|
||||||
btnStart = new javax.swing.JButton();
|
btnStart = new javax.swing.JButton();
|
||||||
btnStop = new javax.swing.JButton();
|
btnStop = new javax.swing.JButton();
|
||||||
jPanel2 = new javax.swing.JPanel();
|
|
||||||
lblZahl1 = new javax.swing.JLabel();
|
|
||||||
lblZahl2 = new javax.swing.JLabel();
|
|
||||||
lblZahl3 = new javax.swing.JLabel();
|
|
||||||
|
|
||||||
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
||||||
|
|
||||||
|
lblZahl.setFont(new java.awt.Font("Liberation Sans", 0, 100)); // NOI18N
|
||||||
|
lblZahl.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
|
lblZahl.setText("?");
|
||||||
|
getContentPane().add(lblZahl, java.awt.BorderLayout.CENTER);
|
||||||
|
|
||||||
btnStart.setText("Start");
|
btnStart.setText("Start");
|
||||||
jPanel1.add(btnStart);
|
jPanel1.add(btnStart);
|
||||||
|
|
||||||
@ -90,26 +71,6 @@ public class ZahlenView extends javax.swing.JFrame
|
|||||||
|
|
||||||
getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_END);
|
getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_END);
|
||||||
|
|
||||||
lblZahl1.setFont(new java.awt.Font("Liberation Sans", 0, 100)); // NOI18N
|
|
||||||
lblZahl1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
|
||||||
lblZahl1.setText("?");
|
|
||||||
lblZahl1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
|
|
||||||
jPanel2.add(lblZahl1);
|
|
||||||
|
|
||||||
lblZahl2.setFont(new java.awt.Font("Liberation Sans", 0, 100)); // NOI18N
|
|
||||||
lblZahl2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
|
||||||
lblZahl2.setText("?");
|
|
||||||
lblZahl2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
|
|
||||||
jPanel2.add(lblZahl2);
|
|
||||||
|
|
||||||
lblZahl3.setFont(new java.awt.Font("Liberation Sans", 0, 100)); // NOI18N
|
|
||||||
lblZahl3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
|
||||||
lblZahl3.setText("?");
|
|
||||||
lblZahl3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
|
|
||||||
jPanel2.add(lblZahl3);
|
|
||||||
|
|
||||||
getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER);
|
|
||||||
|
|
||||||
pack();
|
pack();
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
@ -166,9 +127,6 @@ public class ZahlenView extends javax.swing.JFrame
|
|||||||
private javax.swing.JButton btnStart;
|
private javax.swing.JButton btnStart;
|
||||||
private javax.swing.JButton btnStop;
|
private javax.swing.JButton btnStop;
|
||||||
private javax.swing.JPanel jPanel1;
|
private javax.swing.JPanel jPanel1;
|
||||||
private javax.swing.JPanel jPanel2;
|
private javax.swing.JLabel lblZahl;
|
||||||
private javax.swing.JLabel lblZahl1;
|
|
||||||
private javax.swing.JLabel lblZahl2;
|
|
||||||
private javax.swing.JLabel lblZahl3;
|
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
}
|
}
|
@ -3,9 +3,8 @@
|
|||||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package bandit.Model.Generator;
|
package bandit;
|
||||||
|
|
||||||
import bandit.Model.Zahlengenerator;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.Flow.Subscriber;
|
import java.util.concurrent.Flow.Subscriber;
|
||||||
@ -18,42 +17,46 @@ import bandit.util.OhmLogger;
|
|||||||
*
|
*
|
||||||
* @author le
|
* @author le
|
||||||
*/
|
*/
|
||||||
public class Generator1 implements Runnable // Callable
|
public class Zahlengenerator implements Runnable // Callable
|
||||||
{
|
{
|
||||||
private static Logger lg = OhmLogger.getLogger(); //Logger sollten immer static sein da sie für alle instanzen loggs ausführen
|
private static Logger lg = OhmLogger.getLogger(); //Logger sollten immer static sein da sie für alle instanzen loggs ausführen
|
||||||
|
|
||||||
private Integer[] wert;
|
private int wert;
|
||||||
private volatile boolean laufend;
|
/** Zustandsvariable !!!
|
||||||
|
* bei 2 Werten boolean sonst enum
|
||||||
|
*/
|
||||||
|
// private volatile boolean laufend;
|
||||||
|
private AtomicBoolean laufend;
|
||||||
|
//private Thread thd;
|
||||||
private ExecutorService eService;
|
private ExecutorService eService;
|
||||||
|
|
||||||
private final Object LOCK;
|
private final Object LOCK;
|
||||||
|
|
||||||
private SubmissionPublisher<Integer[]> wertPublisher;
|
private SubmissionPublisher<Integer> wertPublisher;
|
||||||
|
|
||||||
public Generator1(Zahlengenerator hauptgenerator)
|
public Zahlengenerator()
|
||||||
{
|
{
|
||||||
wert = new Integer[2];
|
wert = -1;
|
||||||
wert[0] = -1;
|
//laufend = false;
|
||||||
wert[1] = 1;
|
laufend = new AtomicBoolean(false);
|
||||||
|
//thd = null;
|
||||||
laufend = false;
|
|
||||||
eService = Executors.newSingleThreadExecutor();
|
eService = Executors.newSingleThreadExecutor();
|
||||||
wertPublisher = new SubmissionPublisher<>();
|
wertPublisher = new SubmissionPublisher<>();
|
||||||
this.addWertSubscription(hauptgenerator);
|
|
||||||
LOCK = new Object();
|
LOCK = new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addWertSubscription(Subscriber<Integer[]> subscriber)
|
public void addWertSubscription(Subscriber<Integer> subscriber)
|
||||||
{
|
{
|
||||||
wertPublisher.subscribe(subscriber);
|
wertPublisher.subscribe(subscriber);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void start()
|
public void start()
|
||||||
{
|
{
|
||||||
laufend = true;
|
//laufend = true;
|
||||||
|
laufend.set(true);
|
||||||
synchronized (LOCK)
|
synchronized (LOCK)
|
||||||
{
|
{
|
||||||
LOCK.notifyAll();
|
LOCK.notify();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -62,13 +65,18 @@ public class Generator1 implements Runnable // Callable
|
|||||||
eService = Executors.newSingleThreadExecutor();
|
eService = Executors.newSingleThreadExecutor();
|
||||||
}
|
}
|
||||||
eService.execute(this);
|
eService.execute(this);
|
||||||
|
//Future task = eService.submit(this); v.a. bei callable
|
||||||
|
// if (thd == null)
|
||||||
|
// {
|
||||||
|
// thd = new Thread(this);
|
||||||
|
// thd.start();
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stop()
|
public void stop()
|
||||||
{
|
{
|
||||||
synchronized(LOCK){
|
//laufend = false;
|
||||||
laufend = false;
|
laufend.set(false);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -76,13 +84,14 @@ public class Generator1 implements Runnable // Callable
|
|||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
while (!laufend)
|
//while (!laufend)
|
||||||
|
while (!laufend.get())
|
||||||
{
|
{
|
||||||
synchronized (LOCK)
|
synchronized (LOCK)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lg.info("WAIT_Gen1");
|
lg.info("WAIT");
|
||||||
LOCK.wait();
|
LOCK.wait();
|
||||||
}
|
}
|
||||||
catch (InterruptedException ex)
|
catch (InterruptedException ex)
|
||||||
@ -103,12 +112,18 @@ public class Generator1 implements Runnable // Callable
|
|||||||
this.berechneWert();
|
this.berechneWert();
|
||||||
wertPublisher.submit(wert);
|
wertPublisher.submit(wert);
|
||||||
}
|
}
|
||||||
|
// thd = null;
|
||||||
|
// eService.shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void berechneWert()
|
private synchronized void berechneWert()
|
||||||
{
|
{
|
||||||
wert[0] = (int) (1 + 6*Math.random());
|
wert = (int) (1 + 49*Math.random());
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized int getWert()
|
||||||
|
{
|
||||||
|
return wert;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user