public class Thread1 extends ProcessManager{
public static final Object lock = new Object();
private String name = null;
public String changeValue = "";
public Thread1(String name){
this.name=name;
}
public void init(){
synchronized(lock){
changeValue += "当前线程的名称";
Contants.count += 1;
System.out.println(Thread.currentThread().getName()+" :count="+Contants.count);
}
}
public void process(){
synchronized(lock){
changeValue += this.name;
Contants.count += 1;
System.out.println(Thread.currentThread().getName()+" process:count="+Contants.count);
}
}
public static void main(String args[]){
new Thread(new Thread1("Thread 1")).start();
new Thread(new Thread1("Thread 2")).start();
new Thread(new Thread1("Thread 3")).start();
new Thread(new Thread1("Thread 4")).start();
new Thread(new Thread1("Thread 5")).start();
new Thread(new Thread1("Thread 6")).start();
new Thread(new Thread1("Thread 7")).start();
new Thread(new Thread1("Thread 8")).start();
new Thread(new Thread1("Thread 9")).start();
new Thread(new Thread1("Thread 10")).start();
new Thread(new Thread1("Thread 11")).start();
new Thread(new Thread1("Thread 12")).start();
new Thread(new Thread1("Thread 13")).start();
new Thread(new Thread1("Thread 14")).start();
new Thread(new Thread1("Thread 15")).start();
new Thread(new Thread1("Thread 16")).start();
new Thread(new Thread1("Thread 17")).start();
new Thread(new Thread1("Thread 18")).start();
new Thread(new Thread1("Thread 19")).start();
}
}
public abstract class ProcessManager implements Runnable {
protected static boolean isRunning = false;
public abstract void init()throws Exception;
public abstract void process()throws Exception;
public void run(){
// if (isRunning) {
// System.out.println("is running please wait !");
// synchronized(this){
// try{
// this.wait();
// }catch(Exception e){
// }
// }
// }
// isRunning = true;
try{
init();
process();
// isWorking = false;
}catch(Exception e){
e.printStackTrace();
}
}
}