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; @Override public 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 block e.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 block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + ",恭喜您,抢到票了,编号为:" + num--); } }
Java中线程安全(synchronized)
最新推荐文章于 2024-01-29 18:05:59 发布