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 发布