1. 操作相同时,写一个 Runnable 实现类,内部设置成员变量,run 方法修改该变量,将该Runnable传给不同Thread使用;
2. 操作不同时,在Thread调用类实例化一个数据实例,传递给不同Runnable处理,再把不同的Runnable传给不同Thread使用;
3. 在Thread调用类实例化一个数据实例,使用内部Runnable类直接访问该数据实例进行处理,再把Runnable传给不同Thread使用;
注意:根据需要,共享变量往往需要 Synchronized 同步数据操作。
例子:
public class DataTest6 {
private int j;
public static void main(String[] args) {
DataTest6 dt = new DataTest6();
Inc inc = dt.new Inc();
Dec dec = dt.new Dec();
for(int i=0;i < 2; i++){
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}
class Inc implements Runnable{
public void run() {
for(int i=0; i<100; i++){
inc();
}
}
}
class Dec implements Runnable{
public void run() {
for(int i=0; i<100; i++){
dec();
}
}
}
private synchronized void inc() {
j++;
System.out.println(Thread.currentThread().getName() + " +inc: " + j);
}
private synchronized void dec() {
j--;
System.out.println(Thread.currentThread().getName() + " -dec: " + j);
}
}