Skip to content

Commit 11de41f

Browse files
author
BuildTools
committed
IntSequence and Futures system (no executors)
1 parent cf7379a commit 11de41f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1577
-323
lines changed

src/main/java/dev/mv/utilsx/Test.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import java.util.Arrays;
77
import java.util.List;
8-
import java.util.Map;
8+
import java.util.Random;
99

1010
@SuppressWarnings("unchecked")
1111
public class Test {
@@ -18,8 +18,8 @@ public static void main(String[] args) {
1818
.ints()
1919
.take(10)
2020
.map(x -> (char) (int) x)
21-
.fold("", (s, c) -> s + c)
22-
.getUnchecked();
21+
.collect();
22+
2323
System.out.println(str);
2424

2525
List<List<Integer>> w = Sequence
@@ -31,9 +31,11 @@ public static void main(String[] args) {
3131
.map(Arrays::asList)
3232
.collect();
3333

34-
System.out.println(w);
34+
//System.out.println(w);
3535

3636
List<Integer> l = Sequence.from(1, 2, 3).cycle().take(10).collect();
37-
System.out.println(l);
37+
//System.out.println(l);
38+
39+
Sequence.random().bind(0, 20).ints();
3840
}
3941
}

src/main/java/dev/mv/utilsx/async/AsyncEvent.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/main/java/dev/mv/utilsx/async/AsyncManager.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/main/java/dev/mv/utilsx/async/AsyncRunnable.java

Lines changed: 0 additions & 40 deletions
This file was deleted.

src/main/java/dev/mv/utilsx/async/AsyncRunnableProvider.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/main/java/dev/mv/utilsx/async/AsyncTask.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/main/java/dev/mv/utilsx/async/AsyncTasks.java

Lines changed: 0 additions & 42 deletions
This file was deleted.

src/main/java/dev/mv/utilsx/async/MonoThreadAsyncProcessor.java

Lines changed: 0 additions & 92 deletions
This file was deleted.
Lines changed: 59 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,65 @@
11
package dev.mv.utilsx.async;
22

3-
public class Signal {
3+
import dev.mv.utilsx.futures.*;
4+
import dev.mv.utilsx.generic.Null;
5+
6+
import java.time.Duration;
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
import java.util.concurrent.atomic.AtomicInteger;
10+
11+
public class Signal implements Wake {
12+
13+
final Mutex<Boolean> ready = new Mutex<>(false);
14+
final CondVar condition = new CondVar(ready);
15+
final List<Waker> wakers = new ArrayList<>(1);
16+
final AtomicInteger waiting = new AtomicInteger(0);
17+
18+
public boolean ready() {
19+
return ready.get();
20+
}
21+
22+
public void await() {
23+
ready.lock();
24+
waiting.getAndIncrement();
25+
while (!ready.getLocked()) {
26+
condition.await();
27+
}
28+
if (waiting.decrementAndGet() == 0) {
29+
ready.setLocked(false);
30+
}
31+
ready.unlock();
32+
}
33+
34+
public void await(Duration timeout) {
35+
ready.lock();
36+
waiting.getAndIncrement();
37+
while (!ready.getLocked()) {
38+
condition.await(timeout);
39+
}
40+
if (waiting.decrementAndGet() == 0) {
41+
ready.setLocked(false);
42+
}
43+
ready.unlock();
44+
}
45+
46+
public void await(long timeoutMillis) {
47+
await(Duration.ofMillis(timeoutMillis));
48+
}
49+
50+
public Future<Null> awaitAsync() {
51+
return new SignalFuture(this);
52+
}
53+
54+
@Override
455
public void wake() {
5-
try {
6-
notifyAll();
7-
} catch (Exception e) {
8-
throw new RuntimeException(e);
56+
ready.lock();
57+
ready.set(true);
58+
for (Waker waker : wakers) {
59+
waker.wake();
960
}
61+
wakers.clear();
62+
condition.signalAll();
63+
ready.unlock();
1064
}
1165
}

0 commit comments

Comments
 (0)