Java中多线程同时访问同一个对象或者资源时,会出现后面线程修改前面线程正在使用的数据,因此需要一个数据保护的机制。在Java中提供了同步锁(synchronized)的机制,同步锁(synchronized)会保护代码块只能被一个线程运行。
现在以把一个变量从0加到20为例:
运用多线程同步增加
//
创建线程类
-----------------------------------------------------------------------------------------
public class Station extends Thread{
//通过构造方法给线程名字赋值
public Station(String name){
super(name);
}
//保证每个线程操作的是同一个变量,这里使用静态变量
static int a=0;
//创建一个静态钥匙
static Object ob=“aa”;//可以是任意值,随意取的,
public void run(){
while(a<20){
//主要步骤:拿上钥匙加锁,出来后让出钥匙
synchronized(ob){
if(a<20){
System.out.println(getName()+"+1完成,数值为"+a);
a++;
}else{
S