JAVA同步问题
线程不安全,数据有负数和相同的情况
*只有修改时才要加锁。synchronized
*保证正确性,效率
package cn.thread;
/*
* 加入sleep后要保障线程安全
* 线程不安全,数据有负数和相同的情况
* 只有修改时才要加锁。synchronized
*保证正确性,效率
*/
public class Web12306 implements Runnable {
private int ticketNums = 10;
private boolean flag = true;
public void run() {
while(flag) {
test();
}
}
//线程安全,同步 。锁的资源,锁的是对象的资源。如果目标不对锁定失败,如果这里面ticketNum从属于另外一个对象将会加锁失败。
public synchronized void test() {
if(ticketNums<0) {
flag = false;
return;
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+ticketNums--);
}
public static void main(String[] args) {
//一份资源多个代理
Web12306 web = new Web12306();
new Thread(web,"A").start();
new Thread(web,"B").start();
new Thread(web,"C").start();
}
}