84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
闭关修行中......
参考StackOverflow问题:
http://stackoverflow.com/ques...
但是,还是意犹未尽,还请各位多多指教、探讨!
运行如下测试程序,最后的结果并不是20000,中间有很多次结果都被覆盖了。
public class Test { private static int staticVariableOne = 0; public Test() { super(); } public static int getStaticVariableOne() { return staticVariableOne; } public static void setStaticVariableOne(int staticVariableOne) { Test.staticVariableOne = staticVariableOne; } private static void increaseStaticVariableOne() { staticVariableOne++; } public synchronized void add() { System.out.println("执行 add() 开始..."); try { for (int i = 0; i < 10000; i++) { increaseStaticVariableOne(); Thread.sleep(1); } } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("执行 add() 完毕..."); } public synchronized static void addStatic() { System.out.println("执行 addStatic() 开始..."); try { for (int i = 0; i < 10000; i++) { increaseStaticVariableOne(); Thread.sleep(2); } } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("执行 addStatic() 完毕..."); } }
public class StudyMain { public static void main( String[] args ) { final Test insertData = new Test(); Thread threadOne = new Thread() { @Override public void run() { insertData.add(); } }; Thread threadTwo = new Thread() { @Override public void run() { Test.addStatic(); } }; threadOne.start(); threadTwo.start(); try { threadOne.join(); } catch (InterruptedException e) { e.printStackTrace(); } try { threadTwo.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("After 20000 times increasements, final staticVariableOne is " + Test.getStaticVariableOne()); } }
参考StackOverflow问题:
http://stackoverflow.com/ques...
但是,还是意犹未尽,还请各位多多指教、探讨!
补充:
运行如下测试程序,最后的结果并不是20000,中间有很多次结果都被覆盖了。