
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Java编程开发语言是目前大多数软件编程开发程序员都在学习的一个编程开发语言,而本文我们就通过案例分析来简单了解一下,Java编程多线程内存模型应用分析。
线程私有栈内存
每个线程私有的内存区域
进程公有堆内存
同一个进程共有的内存区域
为什么会有线程安全问题?
多个线程同时具有对同一资源的操作权限,又发生了同时对该资源进行读取、写入的情况,那么就会出现重复操作的情况
如何解决线程安全问题呢?加锁
什么是锁?
锁就是对于操作资源的一种权限
锁可以做什么?
对于一个资源加锁后,每次只能有一个线程对该资源进行操作,当该线程操作结束后,才会解锁。
解锁之后,所有的线程获得竞争此资源的机会。
什么情况下需要加锁?
读读不需要加锁
写写需要加锁
读写需要加锁
方法前加synchronized关键字
功能:线程进入用synchronized声明的方法时就上锁,方法执行完自动解锁,锁的是当前类的对象
调用synchronized声明的方法一定是排队运行的
当A线程调用object对象的synchronized声明的X方法时
B线程可以调用其他非synchronized声明的方法
B线程不能调用其他synchronized声明的非X方法
synchronized锁重入
锁重入的概念:自己可以重复获得自己的内部锁。即synchronized声明的方法,可以调用本对象的其他synchronized方法。
锁重入支持继承的环境,即子类的synchronized方法也可以调用父类的synchronized方法。
synchronized同步代码块
synchronized关键字与synchronized代码块的区别
synchronized声明的方法是将当前对象作为锁
synchronized代码块是将任意对象作为锁
当两个线程访问同一个对象的synchronized代码块时,只有一个线程可以得到执行,另一个线程只能等待当前线程执行完才能执行。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。