public class SomeThreadedClass extends Thread { private static Vector sharedObject; //shared data private Integer localObject; //not shared private void accessSomeSharedObject() { // change values in sharedObject ... } public void doSomeOperation() { synchronized(sharedObject) { accessSomeSharedObject(); } } public void run() { while(someCondition) { doSomeOperation(); // accesses shared data doSomeOtherOperation(); // no shared data } } public void doSomeOtherOperation() { // change values in localObject ... } ... } |
public class SomeThreadedClass extends Thread { private static Vector sharedObject;//shared data private Integer localObject; //not shared private void accessSomeSharedObject() { // change values in sharedObject ... } public void doSomeOperation() { synchronized(SomeThreadedClass.class) { accessSomeSharedObject(); } } public void run() { while(someCondition) { doSomeOperation(); // accesses shared data doSomeOtherOperation(); // no shared data } } public void doSomeOtherOperation() { // change values in localObject ... } ... } |
Make an arbitrary shared (static
) object in SomeThreadedClass
.
public class SomeThreadedClass extends Thread { private static Vector sharedObject;//shared data private Integer localObject; //not shared private static Object lockObject = new Object(); private void accessSomeSharedObject() { // change values in sharedObject ... } public void doSomeOperation() { synchronized(lockObject) { accessSomeSharedObject(); } } public void run() { while(someCondition) { doSomeOperation(); // accesses shared data doSomeOtherOperation(); // no shared data } } public void doSomeOtherOperation() { // change values in localObject ... } ... } |
© 1996-2000 Marty Hall, 1999-2000 Lawrence M. Brown