Tasklet, Shapes

thobaben_serialize
Harald Wolff 2014-01-30 22:15:54 +01:00
parent dba92aaa8b
commit 118be98bac
5 changed files with 135 additions and 1 deletions

View File

@ -0,0 +1,45 @@
package org.hwo.fifo;
import java.util.LinkedList;
import java.util.List;
public class FiFo<T> {
private LinkedList<T> elements;
public FiFo()
{
elements = new LinkedList<T>();
}
public void push(T element)
{
elements.add(element);
}
public T pull()
{
return elements.poll();
}
public T peek()
{
return elements.peek();
}
public List<T> getElements()
{
return elements;
}
public boolean isEmpty()
{
return elements.isEmpty();
}
public boolean hasElements()
{
return !elements.isEmpty();
}
}

View File

@ -0,0 +1,7 @@
package org.hwo.tasklet;
public interface Tasklet {
public void run(Object arg);
}

View File

@ -0,0 +1,70 @@
package org.hwo.tasklet;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
import org.hwo.fifo.FiFo;
public class TaskletThread extends Thread {
private class QueuedTasklet
{
private Tasklet tasklet;
private Object argument;
public QueuedTasklet(Tasklet tasklet,Object argument)
{
this.tasklet = tasklet;
this.argument = argument;
}
}
private FiFo<QueuedTasklet> queuedTasklets = new FiFo<QueuedTasklet>();
public TaskletThread() {
start();
}
public void queue(Tasklet tasklet,Object arg)
{
synchronized (queuedTasklets) {
queuedTasklets.push(new QueuedTasklet(tasklet,arg));
}
queuedTasklets.notify();
}
@Override
public void run() {
while (true)
{
QueuedTasklet queuedTasklet = null;
synchronized (queuedTasklets) {
try {
queuedTasklets.wait(100);
queuedTasklet = queuedTasklets.pull();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (queuedTasklet != null)
{
try
{
queuedTasklet.tasklet.run(queuedTasklet.argument);
} catch (Exception ex)
{
System.err.println("Tasklet throwed Exception: " + ex.toString());
ex.printStackTrace();
}
}
if (isInterrupted())
return;
}
}
}

View File

@ -0,0 +1,13 @@
package org.hwo.ui.shapes;
import java.awt.Polygon;
public class Rectangle extends Polygon {
public Rectangle(int left,int top,int width,int height)
{
super(new int[]{left,left + width - 1,left + width - 1,left},new int[]{ top,top,top + height - 1,top + height - 1 },4);
}
}

View File

@ -9,5 +9,4 @@ public class Triangle extends Polygon {
super(new int[]{x1,x2,x3},new int[]{y1,y2,y3},3);
}
}