My OCJP Prep

Threading Example

import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
 
public class Fabric extends Thread {
    public static void main(String[] args) {
        Thread t = new Thread(new Fabric());
        Thread t2 = new Thread(new Fabric());
        t.start();
        t2.start();
    }
    public void run() {
        for(int i = 0; i < 2; i++) {
            System.out.print(Thread.currentThread().getName() + " ");
        }
    }
}

Inner Class and Static Nested Class Example

public class OuterClass {
 
    private String outerInstanceVar;
 
    public void foo() {
        System.out.println("Outer class");
    }
 
    public class InnerClass {
 
        public void printVars() {
            // in non-static inner class, it has reference of outer class.
            // so, outerInstanceVar can be printed here.
            System.out.println( "Print Outer Class Instance Var.:" + outerInstanceVar);
        }
 
        public void foo() {
            System.out.println("Inner class");
        }
 
        public void test() {
            this.foo();
            OuterClass.this.foo();
        }
    }
 
    public static class StaticNestedClass {
 
        public void printPrivateVariables() {
            // in static inner class, it has no reference of outer class.
            // so, outerInstanceVar can be printed here only when you create OuterClass instance.
            OuterClass outerClass = new OuterClass();
            System.out.println("Print Outer Class Instance Var.:" + outerClass.outerInstanceVar);
        }
    }
 
    public static void main(String[] args) {
 
        // for inner class, must instanciate OuterClass to create InnerClass object. 
        OuterClass o = new OuterClass();
        OuterClass.InnerClass i = o.new InnerClass();
        i.test();
 
        // but for static nested class, no need to instanciate OuterClass to create InnerClass object.
        OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
    }
}
mmahmoud@ubuntu:~/Desktop/OCJP/test$ java InnerClassTest
Inner class
Outer class
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License