import static utils.Utils.*; public class ThreadTest { private static class Integer { private int data; Integer(int data) { this.data = data; } int getData() { return data; } void setData(int data) { this.data = data; } } public static void main(String[] args) throws InterruptedException { final Integer var = new Integer(0); Thread testThread = new Thread(new Runnable() { @Override public void run() { var.setData(42); } }); testThread.start(); testThread.join(); assertEquals(42, var.getData()); Thread testThread1 = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 2000; i++) { synchronized (var) { var.setData(var.getData() + 1); } } } }); Thread testThread2 = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 1000; i++) { synchronized (var) { var.setData(var.getData() - 1); } } } }); testThread1.start(); testThread2.start(); testThread1.join(); testThread2.join(); assertEquals(1042, var.getData()); }}
import static utils.Utils.*;
public class ThreadTest {
private static class Integer {
private int data;
Integer(int data) {
this.data = data;
}
int getData() {
return data;
}
void setData(int data) {
this.data = data;
}
}
public static void main(String[] args) throws InterruptedException {
final Integer var = new Integer(0);
Thread testThread = new Thread(new Runnable() {
@Override
public void run() {
var.setData(42);
}
});
testThread.start();
testThread.join();
assertEquals(42, var.getData());
Thread testThread1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 2000; i++) {
synchronized (var) {
var.setData(var.getData() + 1);
}
}
}
});
Thread testThread2 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
synchronized (var) {
var.setData(var.getData() - 1);
}
}
}
});
testThread1.start();
testThread2.start();
testThread1.join();
testThread2.join();
assertEquals(1042, var.getData());
}
}