加了synchronized就是代表这个是锁,保证每次只能有一个线程访问这个代码,防止多线程并发,出现获取数据错误。当我们运行一个项目进程时会有多个线程启动。一个函数可能由多个线程会来访问,获取其中的公共资源,就是并发,假如一个函数里面有公共资源b=12;线程A把b改为10,而同时线程B来获取数据时,不知道自己的数据被改了,就获取到修改后的数据。这当然不是我们想要的。将函数加一个锁就可以每次只让一个线程来来访问,其他的都是等待
public static synchronized String genUniqueKey() {
Random random = new Random();
int num = random.nextInt(900000) + 100000;
return System.currentTimeMillis() + String.valueOf(num);
}
如果查看JAVA源代码的时候有native关键字时,就代表是java底层c语言
1.单线程:程序中只存在一个线程,实际主方法就是一个主线程
2.多线程:在一个程序中运行多个任务
3.线程的实现:
1)继承Thread类:必须重写run()方法,等待CPU进行调度
2)实现Runnable接口
4线程的状态
1)创建状态:建立一个多线程对象
<