本文共 782 字,大约阅读时间需要 2 分钟。
package 卖车票程序;/* * 多线程,cpu来回切换运行程序,就会导致一个问题的出现,一个线程卖票一张刚卖出去还没减一,cpu又切换到另一个线程去了, * 会导致这个线程以没减的票为总数开始卖。*/import 课后作业.test1;public class TestCpiao extends Thread {public static int chepiao = 100;// 加static所有对象共享100站票public static String aa = new String("1");//aa也要设置成静态的。这样才能为公共的,如果aa不是公共的,那么线程就不存在抢了。字符串随意定义定义在函数边//synchronized的作用是 让他管辖的代码部分,要么全部执行完,要么全部不执行public void run() {//synchronized修饰函数不需要字符串,相当于默认thiswhile (true) {synchronized (aa) {//即可以修饰代码块又可以修饰函数if (chepiao > 0) {System.out.println("第" + Thread.currentThread().getName()+ "车站在卖第" + (101 - chepiao) + "张车票");--chepiao;} else {break;}}}}public static void main(String[] args) throws InterruptedException {TestCpiao testCpiao = new TestCpiao();testCpiao.start();TestCpiao testCpiao2 = new TestCpiao();testCpiao2.start();}}
转载地址:http://qlrqj.baihongyu.com/