java-同步锁synchronized

来源:互联网 发布:杭州市行知小学 编辑:程序博客网 时间:2024/05/18 17:40
/** * 多线程并发安全问题 * 当多个线程并发访问同一资源时,由于线程切换不确定导致的代码执行顺序混乱从而出现很多问题。 * *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--;    }}
原创粉丝点击