我創建了3個線程訪問內部類MyInnerClass
ThreadsAroundInnerClasses
外部類。多線程訪問內部類
package com.test; public class ThreadsAroundInnerClasses { public static void main(String[] args) { Thread t1 = new Thread(new MyThread(), "THREAD-1"); Thread t2 = new Thread(new MyThread(), "THREAD-2"); Thread t3 = new Thread(new MyThread(), "THREAD-3"); t1.start(); t2.start(); t3.start(); } static class MyInnerClass { static int counter = 0; public void printIt(String threadName) { System.out.println("I am inside inner class, counter value is " + ++counter + " and thread name is " + threadName); } } } class MyThread implements Runnable { @Override public void run() { ThreadsAroundInnerClasses.MyInnerClass innerObj = new ThreadsAroundInnerClasses.MyInnerClass(); innerObj.printIt(Thread.currentThread().getName()); } }
在輸出中我可以看到,在MyInnerClass
類counter
靜態變量不按順序得到更新。
I am inside inner class, counter value is 1 and thread name is THREAD-1 I am inside inner class, counter value is 3 and thread name is THREAD-2 I am inside inner class, counter value is 2 and thread name is THREAD-3
這將是很大的幫助,如果有人可以解釋類如何在內部多線程的情況下處理?我們可以同步整個內部課堂嗎?
在此先感謝您的幫助。