/**
* 多线程并发安全问题
* 当多个线程并发访问同一资源时,由于线程切换不确定导致的代码执行顺序混乱从而出现很多问题。
*
*synchronized关键字
*java中的同步锁
*多个线程并发读写同一个临界资源时会发生“线程并发安全”
*常见的临界资源:
*多线程共享实例变量、多线程共享静态公共变量
*若想解决线程安全问题,需要将异步的操作变为同步操作
*异步操作:多线程并发的操作,相当于各干各的
*同步操作:有先后顺序的操作,相当于你干完我再干
*/
public class Syncdemo {
public static void main(String[] args) {
final Table table=new Table();
Thread t=new Thread() {
public void run() {
while(true) {
Thread.yield();
System.out.println(getName()+":"+table.getBean());//取豆子
}
}
};
Thread t1=new Thread() {
public void run() {
while(true) {
Thread.yield();
System.out.println(getName()+":"+table.getBean());
}
}
};
t.start();
t1.start();
}
}
class Table {
private int beans=20;
public synchronized int getBean() {
if(beans==0) {
throw new RuntimeException("没豆子");
}
Thread.yield();
return beans--;
}
}
java-同步锁synchronized
最新推荐文章于 2024-07-03 23:39:10 发布