| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 858 人关注过本帖
标题:多线程调用问题(望哪位有空给个详解)
取消只看楼主 加入收藏
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
 问题点数:0 回复次数:4 
多线程调用问题(望哪位有空给个详解)
import java.lang.String;
class ThreadDemo6
{
public static void main(String [] args)
{
ThreadTest t=new ThreadTest();
new Thread(t).start();//这个线程调用同步代码块
try{Thread.sleep(1);}catch(Exception e){} //为什么要等待1毫秒
t.str=new String("method");//将t.str赋值使下面能调用同步函数
new Thread(t).start();//这个线程调用同步函数
}
}
class ThreadTest implements Runnable
{
private int tickets=100;
String str = new String ("");
public void run()
{
if(str.equals("method"))//调用选择
{
while(true)
{
sale();
}
}
else
{
while(true)
{
synchronized(this) //这里的this是什么作用是指向谁的啊
{
if(tickets>0)
{
try{Thread.sleep(10);}catch(Exception e){} //程序到这为什么要等待10毫秒(在多线程问题上它的执行情况是什么样的)
System.out.println(Thread.currentThread().getName()+" is saling ticket " + tickets--);
}
}
}
}
}
public synchronized void sale()
{
if(tickets>0)
{
try{Thread.sleep(10);}catch(Exception e){} //程序到这为什么也要等待10毫秒(在多线程问题上它的执行情况是什么样的)
System.out.println(Thread.currentThread().getName()+"[sale()] is saling ticket " + tickets--);
}
}
}
搜索更多相关主题的帖子: 线程 详解 
2006-10-25 22:37
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
我晕了啊 现谢谢各位达人了

2006-10-25 22:38
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
以下是引用韩峰在2006-10-26 6:44:23的发言:

1。为了让两个线程创建有个时间间隔
加了时间间隔:
Thread-0 is saling ticket 100
Thread-1[sale()] is saling ticket 99
Thread-0 is saling ticket 98
Thread-1[sale()] is saling ticket 97

两个线程就会分开一个线程调用同步函数一个线程调用同步代码块
不加时间间隔:
Thread-0[sale()] is saling ticket 100
Thread-1[sale()] is saling ticket 99
Thread-0[sale()] is saling ticket 98
Thread-1[sale()] is saling ticket 97

两个线程都去调用同步代码块了也就是说t.str=new String("method")这个语句更本就没有执行!
这是为什么(我想问的是这个)
2。this就是代表自己 //自己指的是谁
3。4。这两个等待10豪秒就是就是为了让你看见线程运行时的状态

[此贴子已经被作者于2006-10-26 10:29:21编辑过]


2006-10-26 10:28
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
没人理我了?

2006-10-27 19:24
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
1。为了让两个线程创建有个时间间隔
加了时间间隔:
Thread-0 is saling ticket 100
Thread-1[sale()] is saling ticket 99
Thread-0 is saling ticket 98
Thread-1[sale()] is saling ticket 97
两个线程就会分开一个线程调用同步函数一个线程调用同步代码块
不加时间间隔:
Thread-0[sale()] is saling ticket 100
Thread-1[sale()] is saling ticket 99
Thread-0[sale()] is saling ticket 98
Thread-1[sale()] is saling ticket 97
两个线程都去调用同步代码块了也就是说t.str=new String("method")这个语句更本就没有执行!
这是为什么(我想问的是这个)

2006-10-28 22:26
快速回复:多线程调用问题(望哪位有空给个详解)
数据加载中...
 
   



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

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