将共享数据和操作数据的方法一并封装到Runnable的实现子类中,然后在主方法中new其实例对象,将这个实例对象传个创建的两个匿名Thread对象,并开启运行。为何出现诡异的结果呢?具体问题见代码注释,麻烦大家帮忙瞅瞅!谢谢先!- public class SaleTickets{
- //static Tickets tickets = new Tickets();//这里和(1)处除了他是随类的创建而创建,
- //存储在静态区,以及共享外还有什么区别吗?
- public static void main(String[] args) {
- Tickets tickets = new Tickets();//(1)
- new Thread(tickets).start();//调用tickets身上的run方法将count--
- new Thread(tickets).start();//也是调用tickets身上的run方法将count--
- }
- }
- //将共享数据和操作数据的方法一并封装到Runnable的实现子类中
- class Tickets implements Runnable{
- private int count = 10000;
- @Override
- public /*synchronized*/ void run(){//这里为何加上同步另外一个进程就无法启动呢?
- while(true){
- count--;
- System.out.println(Thread.currentThread().getName()+"|"+count);//打印出来的结果也非常怪异居然有负数
- }
- }
- }
复制代码 |