class SyncClass {
public synchronized void printSomething() {
for (int i=1; i<=3; i++) {
System.out.println(Thread.currentThread().getName()+" Print "+i);
try {
System.out.println(Thread.currentThread().getName()+" Sleep "+i);
Thread.sleep(500);
} catch(InterruptedException e) {
}
System.out.println(Thread.currentThread().getName()+" End "+i);
}
}
}
class ThreadTest {
public static void main(String[] args)
{
SyncClass sc = new SyncClass();
Thread t3 = new Thread(new Runnable() {
public void run()
{
sc.printSomething();
}
}, "A");
Thread t4 = new Thread(new Runnable(){
public void run()
{
sc.printSomething();
}
}, "B");
t3.start();
t4.start();
sc.printSomething(); // main called
}
C:\>javac ThreadTest.java
ThreadTest.java:24: local variable sc is accessed from within inner class; needs
to be declared final
sc.printSomething();
^
ThreadTest.java:31: local variable sc is accessed from within inner class; needs
to be declared final
sc.printSomething();
^
2 errors