package com.zoneland.wdk.util;public class TestThread {
private int jishuqi;
private  synchronized void ioc(){
jishuqi++;
System.out.println(Thread.currentThread().getName()+"-ioc"+jishuqi);
//Thread.currentThread()得到当前的Thread对象,然后调用当前Thread对象的getName方法。
}
private synchronized void dec(){
jishuqi--;
System.out.println(Thread.currentThread().getName()+"-dec"+jishuqi);
}
//声明两个内部类,实现Runnable接口
class Ioc implements Runnable{
public void run(){
for(int i=0;i<100;i++){
ioc();
}
}
}
class Dec implements Runnable{
public void run(){
for(int i=0;i<100;i++){
dec();
}
}
}
/**
*在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;
*在JDK的文档中可以发现,一旦调用start()方法,则会通过JVM找到run()方法。下面启动start()方法启动线程:
*在JDK的安装路径下,src.zip是全部的java源程序,通过此代码找到Thread中的start()方法的定义,
*可以发现此方法中使用了private native void start0();其中native关键字表示可以调用操作系统的底层函数,那么这样的技术成为JNI技术
*在实际开发中一个多线程的操作很少使用Thread类,而是通过Runnable接口完成。
*但是在使用Runnable定义的子类中没有start()方法,只有Thread类中才有。
*此时观察Thread类,有一个构造方法:public Thread(Runnable targer)此构造方法接受Runnable的子类实例,
*也就是说可以通过Thread类来启动Runnable实现的多线程。
*/
public static void main(String args[]){
//初始化两个内部类的实例
TestThread tt = new TestThread();
Ioc ioc = tt.new Ioc();
Dec dec = tt.new Dec();
for(int i=0;i<2;i++){
Thread t = new Thread(ioc);
t.start();
t = new Thread(dec);
t.start();
}
}
}
没有仔细看你的代码太乱了。这是我以前写的,你可以看看,希望对你有帮助。