| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1398 人关注过本帖
标题:关于线程同步:卖票问题!! 为什么票数溢出!
只看楼主 加入收藏
llooppzhang
Rank: 7Rank: 7Rank: 7
来 自:江苏
等 级:黑侠
威 望:5
帖 子:308
专家分:518
注 册:2009-10-18
收藏
得分:0 
回复 10楼 诸葛修勤
初始化一个 Thread数组,有10个数组元素。数组类型是Thread类。。。没有初始化的数组是不能用的。
2011-04-17 14:03
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
程序代码:
        Thread[] threads = new Thread[10];
        for (int i = 0; i < threads.length; i++) {
            threads[i] = new Thread(new Ticket(i + 1));
            threads[i].start();
        }
那么  for  里面的?  new Thread()
2011-04-17 14:07
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 

        Thread[] threads = new Thread[10];
Thread threads[10];
改成这句好像不行耶
2011-04-17 14:09
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
回复 11楼 llooppzhang
程序代码:
public class main
{
    public static void main(String args[])
    {
        yxf y = new yxf();
        y.td_1.start();
    }
}

class yxf implements Runnable
{
    Thread td_1, td_2;
    int i = 1;
    int sum = 0;
    yxf ()
    {
        td_1 = new Thread(this);
        td_2 = new Thread(this);
    }
    @Override
    public void run()
    {
        // TODO Auto-generated method stub
        while ( i<=10 )
        {
            sum += i;
            System.out.println(sum);
            ++i;
            if (6 == i && Thread.currentThread() == td_1)
            {
                System.out.println("over thread td_1");
                td_2.start();
            }
        }
    }
   
}
2011-04-17 14:12
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
结果:
1
3
6
10
15
over thread td_1  //这句运行后 td_1又没有正的结束掉啊  还是临界区的问题啊?
21
28
36
45
55
66
2011-04-17 14:15
llooppzhang
Rank: 7Rank: 7Rank: 7
来 自:江苏
等 级:黑侠
威 望:5
帖 子:308
专家分:518
注 册:2009-10-18
收藏
得分:0 
回复 12楼 诸葛修勤
new Thread(Runnable run);也就是说可以用任何实现runnable接口的类作为参数实例化Thread类

2011-04-18 14:53
llooppzhang
Rank: 7Rank: 7Rank: 7
来 自:江苏
等 级:黑侠
威 望:5
帖 子:308
专家分:518
注 册:2009-10-18
收藏
得分:0 
回复 13楼 诸葛修勤
无论使用的数组属于什么类型,数组标识符实际都是指向真实对象的一个句柄。那些对象本身是在内存
“堆”里创建的。堆对象既可“隐式”创建(即默认产生),亦可“显式”创建(即明确指定,用一个 new
表达式)。
这是think in java上的一句话,对你因该好理解一点。
也可以 arraytype[]  array_name = { elements};隐性创建;
和C++上有点不同...

2011-04-18 14:58
llooppzhang
Rank: 7Rank: 7Rank: 7
来 自:江苏
等 级:黑侠
威 望:5
帖 子:308
专家分:518
注 册:2009-10-18
收藏
得分:0 
回复 15楼 诸葛修勤
td_1 和td_2共享i 和sum,从调试器上看好像是这样。对多线程的处理不是很理解。。。努力中。。。。
2011-04-18 15:21
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
回复 18楼 llooppzhang
刚接触java 没几天啊   有的概念还是点混拟或是没有概念  慢慢来了只能
2011-04-18 16:08
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
是不是java里面说有的对象都是在 堆上分配的?
2011-04-18 16:11
快速回复:关于线程同步:卖票问题!! 为什么票数溢出!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017830 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved