开发者学堂课程【Java 高级编程:线程同步处理】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/291
线程同步处理
线程同步:
经过分析之后已经可以确认同步问题所产生的主要原因了,那么,下面就需要进行同步问题的解决,但是解决同步问题的关键是锁,指的是当某一个线程执行操作的时候,其它线程外面等待。
问题的解决:
如果想解决这样的问题,就必须使用同步,所谓的同步就是指多个操作在同一个时间段内只能有一个线程进行,其他线程要等待此线程完成之后才可以继续执行。
如果要想在程序之中实现这把锁的功能,就可以使用synchronized关键字来实现,利用此关键字可以定义同步方法或同步代码块,在同步代码块的操作里面的代码只允许一个线程执行。
1、利用同步代码块进行处理:
synchronized(同步对象){
同步代码操作 ;
}
一般要进行同步对象处理的时候可以采用当前对象 this 进行同步。
范例:利用同步代码块解决数据同步访问问题
加入同步处理之后,程序的整体的性能下降了。同步实际上会造成性能的降低。
2、利用同步方法解决:
只需要在方法定义上使用 svnchronized 关键字即可。
在日后学习 Java 类库的时候会发现,系统中许多的类上使用的同步处理采用的都是同步方法。