JAVA2

2019-06-12  本文已影响0人  吃块西瓜写代码

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();

}

}

上一篇 下一篇

猜你喜欢

热点阅读