/******************TestThread.java begin****************************/
public class TestThread {
public static void main(String[] args) {
// TODO Auto-generated method stub
Object obj=new Object();
print p=new print(obj);
Thread th=new Thread(p);
th.start();
printNum pn=new printNum(obj);
pn.start();
}
}
class printNum extends Thread{
private Object obj;
public printNum(Object obj){
this.obj=obj;
}
public void run(){
synchronized(obj){
for(int i=1;i<=26;i++){
System.out.println(i*2-1);
System.out.println(i*2);
obj.notifyAll();
try {
obj.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
}
class print implements Runnable{
private Object obj;
public print(Object obj){
this.obj=obj;
}
public void run(){
synchronized(obj){
for(char i='A';i<='Z';i++){
System.out.println(Thread.currentThread().getName()+":"+i);
obj.notifyAll();
try {
obj.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
/******************TestThread.java end****************************/
/*********************TestRunnable.java begin *************************/
public class TestRunnable implements Runnable{
public void run(){
for(int i=0;i<50;i++){
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
public static void main(String args[]){
System.out.println(Thread.currentThread().getName());
TestRunnable tr=new TestRunnable();
Thread th=new Thread(tr);
th.start();
}
}
/*********************TestRunnable.java end*************************/
/*********************Test.java begin*************************/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Object obj=new Object();
printChar pc = new printChar(obj);
pc.start();
printNumber pn = new printNumber(obj);
Thread th = new Thread(pn);
th.start();
}
}
class printChar extends Thread {
private Object obj;
public printChar(Object obj) {
this.obj = obj;
}
public void run() {
synchronized(obj){
for (char i = 'A'; i <= 'Z'; i++) {
System.out.println(i);
obj.notifyAll();
try {
if(i!='Z')
obj.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
class printNumber implements Runnable {
private Object obj;
public printNumber(Object obj) {
this.obj = obj;
}
public void run() {
// TODO Auto-generated method stub
synchronized(obj){
for (int i = 1; i <= 26; i++) {
System.out.println(2 * i - 1);
System.out.println(2 * i);
obj.notifyAll();
try {
if(i!=26)
obj.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
/*********************Test.java end*************************/