自定义线程类中的实例变量对其他线程有共享和非共享之分,这在多线程之间进行交互时是很重要的一个技术点。
1)共享变量实现
线程类定义:
public class Mythread extends Thread{
private int count=3;
public void run(){
count--;
System.out.println(Thread.currentThread().getName()+"-count值为:"+count);
}
}
线程类调用:
public class test {
public static void main(String[] args){
Mythread mythread=new Mythread();
Thread a=new Thread(mythread,"A");
Thread b=new Thread(mythread,"B");
Thread c=new Thread(mythread,"C");
a.start();
b.start();
c.start();
}
}
结果输出:
A-count值为:2
B-count值为:1
C-count值为:0
2)非共享变量实现
线程类定义:
public class Mythread extends Thread{
private int count=3;
public Mythread(String name){
this.setName(name);
}
public void run(){
while(count>0){
count--;
System.out.println(Thread.currentThread().getName()+"-count值为:"+count);
}
}
}
线程类调用:
public class test {
public static void main(String[] args){
Mythread a=new Mythread("A");
Mythread b=new Mythread("B");
Mythread c=new Mythread("C");
a.start();
b.start();
c.start();
}
}
输出结果:
A-count值为:2
A-count值为:1
A-count值为:0
B-count值为:2
B-count值为:1
B-count值为:0
C-count值为:2
C-count值为:1
C-count值为:0