多线程同步

来源:互联网 发布:淘宝怎么破解图片保护 编辑:程序博客网 时间:2024/06/14 16:08
线程实体/** * 线程安全的demo * @author Administrator * */public class SyncThread implements Runnable{    private int ticket =100;    private boolean flag =true;    @Override    public void run() {        while(flag){            test3();        }    }    /**     * 同步方法synchronize     */    public synchronized void test2(){        if(ticket<=0){            flag=false;             return;        }        try {            Thread.sleep(500);        } catch (InterruptedException e) {            e.printStackTrace();        }        System.out.println(Thread.currentThread().getName()+"安全抢到了"+ticket--);    }    /**     * 不同步     */    public void test1(){        if(ticket<=0){            flag=false;            return;        }        try {            Thread.sleep(500);        } catch (InterruptedException e) {            e.printStackTrace();        }        System.out.println(Thread.currentThread().getName()+"不安全抢到了"+ticket--);    }    /**     * 同步代码块,里面只能放引用对象     */    public void test3(){        synchronized(this){            if(ticket<=0){                flag=false;                return;            }            try {                Thread.sleep(500);            } catch (InterruptedException e) {                e.printStackTrace();            }            System.out.println(Thread.currentThread().getName()+"同步块安全抢到了"+ticket--);        }    }}另外一个调用的实现类public class SyncThreadApp {    public static void main(String[] args) {        SyncThread st =new SyncThread();//真实角色        Thread t2 = new Thread(st,"黄牛乙");        Thread t1 = new Thread(st,"黄牛甲");        Thread t3 = new Thread(st,"工程师");        t1.start();        t2.start();        t3.start();    }}
0 0
原创粉丝点击