异步:同一时刻有多个线程运行访问同一区域代码。
同步:同一时刻只有一个线程可以访问特定的代码。
单线程代码中,程序顺序执行,线程每一次执行结果固定,线程安全;
多线程程序中,如果多个线程同一时间访问同一资源代码,对同一变量做出修改,则每一次执行后其结果有可能不同,则线程非安全。
实现线程安全的方法
关键字synchronized:被其修饰的方法为同步方法,同步方法是在同一时刻只有一个线程可以访问。
1.使用关键字synchronized修饰被多线程访问的方法。
2.使用synchronized代码块,将被多线程访问的代码放入其中。即可保证线程安全。
3.使用锁机制,(private final Lock lock = new ReentrantLock();
lock.lock(); //上锁
try{
共享代码
}finally{
lock.unlock(); //解锁})