面试题答案
一键面试use std::thread;
fn main() {
let handle = thread::spawn(|| {
println!("新线程正在执行");
});
handle.join().unwrap();
println!("新线程已执行完成");
}
join
方法的作用:在上述代码中,handle.join()
会阻塞当前线程(即主线程),直到由thread::spawn
创建的新线程执行完毕。join
方法返回一个Result
,如果新线程执行过程中没有发生恐慌(panic),join
会返回新线程的返回值(这里新线程没有返回值),如果新线程发生恐慌,join
会返回Err
,unwrap
方法则是在Result
为Ok
时直接取出值,在Result
为Err
时会使当前线程恐慌。所以join
方法确保了主线程等待新线程完成,从而实现线程同步。