android如何在多个线程里面共享类的变量值,举个例子
时间: 2024-05-12 15:16:14 浏览: 11
,比如有一个计数器变量,多个线程对它加1,最终输出结果是多少?
Android可以使用volatile修饰符声明变量,该关键字保证了线程之间的可见性,即多个线程可以看到变量的修改。同时,可以使用synchronized关键字或Lock对象实现对变量的访问控制,确保变量的正确性。
下面是一个例子:
```
public class SharedCounter {
private volatile int count = 0;
private Object lock = new Object();
public void increment() {
synchronized (lock) {
count++;
}
}
public int getCount() {
return count;
}
}
public class ThreadExample extends Thread {
private SharedCounter counter;
public ThreadExample(SharedCounter counter) {
this.counter = counter;
}
public void run() {
for (int i = 0; i < 10000; i++) {
counter.increment();
}
}
}
// 使用
SharedCounter sharedCounter = new SharedCounter();
Thread t1 = new ThreadExample(sharedCounter);
Thread t2 = new ThreadExample(sharedCounter);
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println(sharedCounter.getCount()); // 输出 20000
```
在上述例子中,SharedCounter类中的count变量使用了volatile关键字修饰,保证了其在多线程中的可见性。同时,increment()方法中使用synchronized关键字实现了对count变量的同步访问,避免了竞态条件导致count变量值的不确定性。