1.多线程同步有哪几种方法?
1.同步方法
即有synchronized关键字修饰的方法,由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调节该方法前,需要获得内置锁,否则就处于阻塞状态。
2.同步代码块
即有synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类
3.使用特殊域变量(volatile)实现线程同步
1.volatile关键字为域变量的访问提供了一种免锁机制
2.使用volatile修饰域相当于告诉虚拟机该域可能会被其他线程更新;
3.因此每次使用该域就需要重新计算,而不是使用寄存器中的值
4.volatile不会提供任何原子操作,他也不能用来修饰final类型的变量。
4.使用重入锁实现线程同步
5.使用局部变量实现线程同步
6.使用阻塞队列实现线程同步
7.使用原子变量实现线程同步
2.并发编程三要素?
1.原子性
指的是一个或多个不能再被分割的操作,通过synchronized或者锁机制,把某个复合操作变成原子操作
2.可见性
当多线程访问某一个变量时候,其中一条线程对此变量做出修改,其他线程可以l立刻读取到最新修改的样子
3.有序性
让代码按照顺序执行
3.为什么要用Dubbo?
当一个项目部署在一台服务器上的时候,当单台机器无法承受负载,这个时候,希望可以通过增加多台服务器来提高系统的负载能力,这个时候分开部署项目可以很好地提高系统的负载能力,当然分开部署项目,模块与模块之间通信需要注册dubbo进行调度。
使用dubbo来完成
1.为了提高机器的性能,当一台机器无法负载请求的时候,这个时候需要
4.在mapper中如何传递多个参数?
1.顺序传参(即在方法中参数的顺序,要和使用的参数的顺序保持一致,一般用0,1代替)
2.@param注解传参数,注解中写的参数,可以在sql中使用
3.map传参,#{}里面的名称填写map里面的key名称
4.javabean传参法