java的线程同步
来源:互联网 发布:电脑工作备忘录软件 编辑:程序博客网 时间:2024/05/16 01:08
1.由于系统的线程调度具有一定的随机性,当使用多个线程访问同一个数据时,很容易“偶然”出现线程安全问题,解决这种问题的主要方法是使用同步代码块、同步方法、同步锁等。
1.1 同步代码块
语法如下:synchronized(obj){//同步代码块},其中obj是同步监视器(临界资源/共享变量),任何一个时刻只有一个线程可以获得同步监视器的锁定。
1.2 同步方法
在访问同步监视器的方法的定义中使用synchronized修饰,如:public synchronized void fun(){};
1.3 同步锁
Lock可以控制多个线程对共享资源进行访问,分为ReadWriteLock(读写锁),ReentrantLock(可重入锁,较常用)。使用格式如下:
class X{ private final ReentrantLock lock=new ReentrantLock(); public void m() { lock.lock(); try { //访问临界资源 } finally { lock.unlock();//建议在finally中释放锁 } }}但上面的同步方式可能会出现死锁的现象。
比如a对象中的方法a1调用b对象的同步synchronized方法b2,需对a加锁,同时b对象的另一方法b1又调用a对象的a2,需对b加锁,但此时已对a,b对象加锁,二者均不能执行下去。
0 0
- Java线程:线程的同步
- java的线程同步
- java 线程的同步
- Java线程的同步
- Java线程的同步
- java线程的同步
- JAVA的线程同步
- java的线程同步
- java线程的同步
- java 线程的同步
- java的线程同步
- java线程的同步
- Java线程的同步
- java线程的同步
- [Java]线程的同步
- java线程的同步
- Java线程:线程的同步-同步方法
- Java线程:线程的同步-同步块
- IOS后台运行机制详解(二)
- 有限状态机(转)
- C语言创建单链表,输出单链表的内容。
- c语言练习题 模拟n个人参加选举的过程,四个 候选人A、B、C、D。若选举某人直接 输入其编号,最后按获得票数从高到 低排序并输出候选人编号和票数。
- ZOJ-1760
- java的线程同步
- java 删除有文件的文件夹
- 注意变化:愚人熬汤
- SAE搭建WordPress教程 免费建WordPress博客站
- 10款优秀Bootstrap响应式后台管理系统模板
- 某班5个学生,3门课,编写3个函数实现以下功能: //(1)求各门课的平均分 //(2)找出三门都不及格的学生,输出其全部信息 //(3)找出3门课平均分在80-90之间的学生,输出其信息。
- 关于硬件电路的疑问,求交流!
- STM32 Nor Flash DFU
- 聊聊自己最近调试的笔记以及想法