use std::sync::{Arc, Mutex};
use std::thread;
fn main() {
let shared_data = Arc::new(Mutex::new(0));
let data1 = Arc::clone(&shared_data);
let handle1 = thread::spawn(move || {
let mut data = data1.lock().unwrap();
for _ in 0..1000 {
*data += 1;
}
});
let data2 = Arc::clone(&shared_data);
let handle2 = thread::spawn(move || {
let mut data = data2.lock().unwrap();
for _ in 0..1000 {
*data -= 1;
}
});
handle1.join().unwrap();
handle2.join().unwrap();
let final_data = shared_data.lock().unwrap();
println!("Final value: {}", *final_data);
}