//三个售票员卖票 import java.util.concurrent.locks.ReentrantLock; public class SaleTickets { public static void main(String[] args) { Ticket ticket = new Ticket(); for (int j = 1; j < 4; j++) {//开三个线程 new Thread(() -> { for (int i = 0; i < 40; i++) { ticket.sale(); } }, "售票员" + String.valueOf(j)).start(); } } } class Ticket { private static int ticketscounts = 30; ReentrantLock reentrantLock = new ReentrantLock(); public void sale() { reentrantLock.lock(); try { if (ticketscounts > 0) { System.out.println(Thread.currentThread().getName() + "卖掉倒数第" + ticketscounts + "票"); ticketscounts--; } } finally { // TODO: handle finally clause reentrantLock.unlock(); } } }
运行结果:(电脑性能好,参数放大十倍参能看出效果)
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 | 售票员2卖掉倒数第300票 售票员2卖掉倒数第299票 售票员2卖掉倒数第298票 售票员2卖掉倒数第297票 售票员2卖掉倒数第296票 售票员2卖掉倒数第295票 售票员2卖掉倒数第294票 售票员2卖掉倒数第293票 售票员2卖掉倒数第292票 售票员2卖掉倒数第291票 售票员2卖掉倒数第290票 售票员2卖掉倒数第289票 售票员2卖掉倒数第288票 售票员2卖掉倒数第287票 售票员2卖掉倒数第286票 售票员2卖掉倒数第285票 售票员2卖掉倒数第284票 售票员2卖掉倒数第283票 售票员2卖掉倒数第282票 售票员2卖掉倒数第281票 售票员2卖掉倒数第280票 售票员2卖掉倒数第279票 售票员2卖掉倒数第278票 售票员2卖掉倒数第277票 售票员2卖掉倒数第276票 售票员2卖掉倒数第275票 售票员2卖掉倒数第274票 售票员2卖掉倒数第273票 售票员2卖掉倒数第272票 售票员2卖掉倒数第271票 售票员2卖掉倒数第270票 售票员2卖掉倒数第269票 售票员2卖掉倒数第268票 售票员2卖掉倒数第267票 售票员2卖掉倒数第266票 售票员2卖掉倒数第265票 售票员2卖掉倒数第264票 售票员1卖掉倒数第263票 售票员1卖掉倒数第262票 售票员1卖掉倒数第261票 售票员1卖掉倒数第260票 售票员1卖掉倒数第259票 售票员1卖掉倒数第258票 售票员1卖掉倒数第257票 售票员1卖掉倒数第256票 售票员1卖掉倒数第255票 售票员1卖掉倒数第254票 售票员1卖掉倒数第253票 售票员1卖掉倒数第252票 售票员1卖掉倒数第251票 售票员1卖掉倒数第250票 售票员1卖掉倒数第249票 售票员1卖掉倒数第248票 售票员1卖掉倒数第247票 售票员1卖掉倒数第246票 售票员1卖掉倒数第245票 售票员1卖掉倒数第244票 售票员1卖掉倒数第243票 售票员1卖掉倒数第242票 售票员1卖掉倒数第241票 售票员1卖掉倒数第240票 售票员1卖掉倒数第239票 售票员1卖掉倒数第238票 售票员1卖掉倒数第237票 售票员1卖掉倒数第236票 售票员1卖掉倒数第235票 售票员1卖掉倒数第234票 售票员1卖掉倒数第233票 售票员1卖掉倒数第232票 售票员1卖掉倒数第231票 售票员1卖掉倒数第230票 售票员1卖掉倒数第229票 售票员1卖掉倒数第228票 售票员1卖掉倒数第227票 售票员1卖掉倒数第226票 售票员1卖掉倒数第225票 售票员1卖掉倒数第224票 售票员1卖掉倒数第223票 售票员1卖掉倒数第222票 售票员1卖掉倒数第221票 售票员1卖掉倒数第220票 售票员1卖掉倒数第219票 售票员1卖掉倒数第218票 售票员1卖掉倒数第217票 售票员1卖掉倒数第216票 售票员1卖掉倒数第215票 售票员1卖掉倒数第214票 售票员1卖掉倒数第213票 售票员1卖掉倒数第212票 售票员1卖掉倒数第211票 售票员1卖掉倒数第210票 售票员1卖掉倒数第209票 售票员1卖掉倒数第208票 售票员1卖掉倒数第207票 售票员1卖掉倒数第206票 售票员1卖掉倒数第205票 售票员1卖掉倒数第204票 售票员1卖掉倒数第203票 售票员1卖掉倒数第202票 售票员1卖掉倒数第201票 售票员1卖掉倒数第200票 售票员1卖掉倒数第199票 售票员1卖掉倒数第198票 售票员1卖掉倒数第197票 售票员1卖掉倒数第196票 售票员1卖掉倒数第195票 售票员1卖掉倒数第194票 售票员1卖掉倒数第193票 售票员1卖掉倒数第192票 售票员1卖掉倒数第191票 售票员1卖掉倒数第190票 售票员1卖掉倒数第189票 售票员1卖掉倒数第188票 售票员1卖掉倒数第187票 售票员1卖掉倒数第186票 售票员1卖掉倒数第185票 售票员1卖掉倒数第184票 售票员1卖掉倒数第183票 售票员1卖掉倒数第182票 售票员1卖掉倒数第181票 售票员1卖掉倒数第180票 售票员1卖掉倒数第179票 售票员1卖掉倒数第178票 售票员1卖掉倒数第177票 售票员1卖掉倒数第176票 售票员1卖掉倒数第175票 售票员1卖掉倒数第174票 售票员1卖掉倒数第173票 售票员1卖掉倒数第172票 售票员1卖掉倒数第171票 售票员1卖掉倒数第170票 售票员1卖掉倒数第169票 售票员1卖掉倒数第168票 售票员1卖掉倒数第167票 售票员1卖掉倒数第166票 售票员1卖掉倒数第165票 售票员1卖掉倒数第164票 售票员1卖掉倒数第163票 售票员1卖掉倒数第162票 售票员1卖掉倒数第161票 售票员1卖掉倒数第160票 售票员1卖掉倒数第159票 售票员1卖掉倒数第158票 售票员1卖掉倒数第157票 售票员1卖掉倒数第156票 售票员1卖掉倒数第155票 售票员1卖掉倒数第154票 售票员1卖掉倒数第153票 售票员1卖掉倒数第152票 售票员1卖掉倒数第151票 售票员1卖掉倒数第150票 售票员1卖掉倒数第149票 售票员1卖掉倒数第148票 售票员1卖掉倒数第147票 售票员1卖掉倒数第146票 售票员1卖掉倒数第145票 售票员1卖掉倒数第144票 售票员1卖掉倒数第143票 售票员1卖掉倒数第142票 售票员1卖掉倒数第141票 售票员1卖掉倒数第140票 售票员1卖掉倒数第139票 售票员1卖掉倒数第138票 售票员1卖掉倒数第137票 售票员1卖掉倒数第136票 售票员1卖掉倒数第135票 售票员1卖掉倒数第134票 售票员1卖掉倒数第133票 售票员1卖掉倒数第132票 售票员1卖掉倒数第131票 售票员1卖掉倒数第130票 售票员1卖掉倒数第129票 售票员1卖掉倒数第128票 售票员1卖掉倒数第127票 售票员1卖掉倒数第126票 售票员1卖掉倒数第125票 售票员1卖掉倒数第124票 售票员1卖掉倒数第123票 售票员1卖掉倒数第122票 售票员1卖掉倒数第121票 售票员1卖掉倒数第120票 售票员1卖掉倒数第119票 售票员1卖掉倒数第118票 售票员1卖掉倒数第117票 售票员1卖掉倒数第116票 售票员1卖掉倒数第115票 售票员1卖掉倒数第114票 售票员1卖掉倒数第113票 售票员1卖掉倒数第112票 售票员1卖掉倒数第111票 售票员1卖掉倒数第110票 售票员1卖掉倒数第109票 售票员1卖掉倒数第108票 售票员1卖掉倒数第107票 售票员1卖掉倒数第106票 售票员1卖掉倒数第105票 售票员1卖掉倒数第104票 售票员1卖掉倒数第103票 售票员1卖掉倒数第102票 售票员1卖掉倒数第101票 售票员1卖掉倒数第100票 售票员1卖掉倒数第99票 售票员1卖掉倒数第98票 售票员1卖掉倒数第97票 售票员1卖掉倒数第96票 售票员1卖掉倒数第95票 售票员1卖掉倒数第94票 售票员1卖掉倒数第93票 售票员1卖掉倒数第92票 售票员1卖掉倒数第91票 售票员1卖掉倒数第90票 售票员1卖掉倒数第89票 售票员1卖掉倒数第88票 售票员1卖掉倒数第87票 售票员1卖掉倒数第86票 售票员1卖掉倒数第85票 售票员1卖掉倒数第84票 售票员1卖掉倒数第83票 售票员1卖掉倒数第82票 售票员1卖掉倒数第81票 售票员1卖掉倒数第80票 售票员1卖掉倒数第79票 售票员1卖掉倒数第78票 售票员1卖掉倒数第77票 售票员1卖掉倒数第76票 售票员1卖掉倒数第75票 售票员1卖掉倒数第74票 售票员1卖掉倒数第73票 售票员1卖掉倒数第72票 售票员1卖掉倒数第71票 售票员1卖掉倒数第70票 售票员1卖掉倒数第69票 售票员1卖掉倒数第68票 售票员1卖掉倒数第67票 售票员1卖掉倒数第66票 售票员1卖掉倒数第65票 售票员1卖掉倒数第64票 售票员1卖掉倒数第63票 售票员1卖掉倒数第62票 售票员1卖掉倒数第61票 售票员1卖掉倒数第60票 售票员1卖掉倒数第59票 售票员1卖掉倒数第58票 售票员1卖掉倒数第57票 售票员1卖掉倒数第56票 售票员1卖掉倒数第55票 售票员1卖掉倒数第54票 售票员1卖掉倒数第53票 售票员1卖掉倒数第52票 售票员1卖掉倒数第51票 售票员1卖掉倒数第50票 售票员1卖掉倒数第49票 售票员1卖掉倒数第48票 售票员1卖掉倒数第47票 售票员1卖掉倒数第46票 售票员1卖掉倒数第45票 售票员1卖掉倒数第44票 售票员1卖掉倒数第43票 售票员1卖掉倒数第42票 售票员1卖掉倒数第41票 售票员1卖掉倒数第40票 售票员1卖掉倒数第39票 售票员1卖掉倒数第38票 售票员1卖掉倒数第37票 售票员1卖掉倒数第36票 售票员1卖掉倒数第35票 售票员1卖掉倒数第34票 售票员1卖掉倒数第33票 售票员1卖掉倒数第32票 售票员1卖掉倒数第31票 售票员1卖掉倒数第30票 售票员1卖掉倒数第29票 售票员1卖掉倒数第28票 售票员1卖掉倒数第27票 售票员1卖掉倒数第26票 售票员1卖掉倒数第25票 售票员1卖掉倒数第24票 售票员1卖掉倒数第23票 售票员1卖掉倒数第22票 售票员1卖掉倒数第21票 售票员1卖掉倒数第20票 售票员1卖掉倒数第19票 售票员1卖掉倒数第18票 售票员1卖掉倒数第17票 售票员1卖掉倒数第16票 售票员1卖掉倒数第15票 售票员1卖掉倒数第14票 售票员1卖掉倒数第13票 售票员1卖掉倒数第12票 售票员1卖掉倒数第11票 售票员1卖掉倒数第10票 售票员1卖掉倒数第9票 售票员1卖掉倒数第8票 售票员1卖掉倒数第7票 售票员1卖掉倒数第6票 售票员1卖掉倒数第5票 售票员1卖掉倒数第4票 售票员1卖掉倒数第3票 售票员1卖掉倒数第2票 售票员1卖掉倒数第1票 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp
· drools 规则引擎和 solon-flow 哪个好?solon-flow 简明教程