static class QWithObjects<A> implements AutoCloseable {
S name = "Unnamed Queue";
L<A> q = synchroLinkedList();
ReliableSingleThread rst = new(r { _run() });
volatile bool retired;
O performJob;
*() {}
*(S *name) {}
void add(Runnable r) {
q.add(r);
_trigger();
}
void _trigger() {
rst.name = name;
rst.go();
}
void add(O r) {
add(toRunnable(r));
}
void _run() {
Runnable r;
while (licensed() && !retired && (r = syncPopFirst(q)) != null) {
pcall { r.run(); }
}
}
public void close() { retired = true; } // TODO: interrupt thread
void done() {} // legacy function
bool isEmpty() { ret q.isEmpty(); }
int size() { ret q.size(); }
}Began life as a copy of #1000934
download show line numbers debug dex old transpilations
Travelled to 6 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1024003 |
| Snippet name: | QWithObjects (runnable queue with arbitrary job objects, dev.) |
| Eternal ID of this version: | #1024003/1 |
| Text MD5: | 7bc81519593658c276ea142e9ea5449f |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2019-07-15 15:40:52 |
| Source code size: | 762 bytes / 37 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 429 / 437 |
| Referenced in: | [show references] |