我是靠谱客的博主 会撒娇人生,这篇文章主要介绍java多线程下模拟抢票,现在分享给大家,希望可以做个参考。

我们设置三个对象分别同时抢20张票,利用多线程实现.

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1 public class Web123506 implements Runnable{ 2 private int ticteksNums=20;//票数 3 4 @Override 5 public void run() { 6 while (true){ 7 if(ticteksNums<0){ 8 break; 9 } 10 /* try { 11 //睡眠 12 Thread.sleep(200); 13 } catch (InterruptedException e) { 14 e.printStackTrace(); 15 }*/ 16 System.out.println(Thread.currentThread().getName()+"-->抢到了"+ticteksNums--); 17 18 } 19 } 20 21 public static void main(String[] args) { 22 // 一份资源 23 Web123506 web = new Web123506(); 24 //多个代理 25 new Thread(web,"我们").start(); 26 new Thread(web,"你们").start(); 27 new Thread(web,"黄牛党").start(); 28 29 } 30 31 }

运行结果为:

我们-->抢到了20
黄牛党-->抢到了18
你们-->抢到了19
黄牛党-->抢到了16
我们-->抢到了17
黄牛党-->抢到了14
你们-->抢到了15
黄牛党-->抢到了12
我们-->抢到了13
黄牛党-->抢到了10
你们-->抢到了11
黄牛党-->抢到了8
我们-->抢到了9
黄牛党-->抢到了6
你们-->抢到了7
黄牛党-->抢到了4
我们-->抢到了5
黄牛党-->抢到了2
你们-->抢到了3
黄牛党-->抢到了0
我们-->抢到了1

结论:

我们可以看到抢到的票没有重复的,说明线程是安全的.

 

这时候我们加入线程的睡眠.观察线程此时是不是安全的?

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1 public class Web123506 implements Runnable{ 2 private int ticteksNums=20;//票数 3 4 @Override 5 public void run() { 6 while (true){ 7 if(ticteksNums<0){ 8 break; 9 } 10 try { 11 //睡眠 12 Thread.sleep(200); 13 } catch (InterruptedException e) { 14 e.printStackTrace(); 15 } 16 System.out.println(Thread.currentThread().getName()+"-->抢到了"+ticteksNums--); 17 18 } 19 } 20 21 public static void main(String[] args) { 22 // 一份资源 23 Web123506 web = new Web123506(); 24 //多个代理 25 new Thread(web,"我们").start(); 26 new Thread(web,"你们").start(); 27 new Thread(web,"黄牛党").start(); 28 29 } 30 31 }

运行结果:

黄牛党-->抢到了20
我们-->抢到了19
你们-->抢到了18
黄牛党-->抢到了17
我们-->抢到了16
你们-->抢到了15
黄牛党-->抢到了14
我们-->抢到了13
你们-->抢到了12
你们-->抢到了11
我们-->抢到了10
黄牛党-->抢到了9
你们-->抢到了8
我们-->抢到了7
黄牛党-->抢到了6
你们-->抢到了5
我们-->抢到了4
黄牛党-->抢到了3
你们-->抢到了2
我们-->抢到了1
黄牛党-->抢到了0
你们-->抢到了-1
我们-->抢到了-1

结论:

当我们加入线程的睡眠,此时抢到的票可能出现了负数或者会出现两个人抢到了同一张票此时说明加入线程睡眠线程是不安全的.

 

转载于:https://www.cnblogs.com/xiaoqiqistudy/p/10984265.html

最后

以上就是会撒娇人生最近收集整理的关于java多线程下模拟抢票的全部内容,更多相关java多线程下模拟抢票内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部