Java中线程安全(synchronized)

来源:互联网 发布:ios蜂窝移动数据应用 编辑:程序博客网 时间:2024/06/08 07:01
package tk.javazhangwei.thread.syn;/*** * 线程安全问题 *  * @author zw * */public class SynDemo01 {public static void main(String[] args) {Web12306 web = new Web12306();Thread th = new Thread(web, "黄牛");Thread th1 = new Thread(web, "农民工");Thread th2 = new Thread(web, "学生");Thread th3 = new Thread(web, "商人");th.start();th1.start();th2.start();th3.start();}}class Web12306 implements Runnable {private int num = 10;private boolean f = true;@Overridepublic void run() {while (f) {test1();}}//同步块public void test1() {synchronized (this) {if (num <= 0) {f = false;return;}try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(Thread.currentThread().getName() + ",恭喜您,抢到票了,编号为:" + num--);}}//同步方法public synchronized void test() {if (num <= 0) {f = false;return;}try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(Thread.currentThread().getName() + ",恭喜您,抢到票了,编号为:" + num--);}}


 
原创粉丝点击