如果我错了,请随时纠正我!
java中的synchronized关键字使得一个方法不能同时在不同的线程中运行。在我的程序中,我有 4 个不同的线程同时运行,计数到 100.000。
将 synchronized 关键字添加到正在执行的方法中时,它的时间应该是多线程的四倍?
无论以哪种方式执行程序,大约需要 16 秒。
这是我的代码!
public class ExerciseThree {
public static void main(String[] args) {
Even even = new Even();
Thread t1 = new Thread(() -> {
for (int i = 0; i < 100000; i++) {
System.out.println(even.next());
}
});
Thread t2 = new Thread(() -> {
for (int i = 0; i < 100000; i++) {
System.out.println(even.next());
}
});
Thread t3 = new Thread(() -> {
for (int i = 0; i < 100000; i++) {
System.out.println(even.next());
}
});
Thread t4 = new Thread(() -> {
for (int i = 0; i < 100000; i++) {
System.out.println(even.next());
}
});
System.out.println("starting thread 1");
t1.start();
System.out.println("starting thread 2");
t2.start();
System.out.println("starting thread 3");
t3.start();
System.out.println("starting thread 4");
t4.start();
}
}
线程调用的方法
public class Even {
private int n = 0;
// public synchronized int next() {
public int next() {
n++;
n++;
return n;
}
}
肥皂起泡泡
相关分类