Back
Close

Computing with Data

elgeish
33.3K views
Previous: Thread Safety - Part I Next: Volatility - Part I

Thread Safety - Part II

class Task implements Runnable {
static boolean isDone = false;
public void run() {
try {
System.out.println("Doing work...");
Thread.sleep(10); // do some work
isDone = true;
} catch (InterruptedException ex) {
System.out.println(ex);
}
}
}
class Poller implements Runnable {
public void run() {
int iterations = 0;
System.out.println("Waiting for work to be done...");
while (!Task.isDone) { // bad way to wait for a signal
++iterations;
}
System.out.println("Polled " + iterations + " times");
}
}
public class Main {
public static void main(String args[]) throws Exception {
new Thread(new Poller()).start();
new Thread(new Task()).start();
Thread.sleep(1000); // ad-hoc wait till threads finish
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Go to tech.io
codingame x discord
Join the CodinGame community on Discord to chat about puzzle contributions, challenges, streams, blog articles - all that good stuff!
JOIN US ON DISCORD
Online Participants