public class TicketsSystem { /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
SellTickets st=new SellTickets();
new Thread(st).start();
try
{
Thread.sleep(1);
}
catch(Exception e)
{
e.printStackTrace();
}
st.b=true;
new Thread(st).start();
}}
class SellTickets implements Runnable
{
int tickets=100;
Object obj=new Object();
boolean b=false;
public void run()
{
if(b==false)
{
while(true)
{
sell();
}
}
else
{
while(true)
{
synchronized(obj)
{ if(tickets>0)
{
try{
Thread.sleep(10);
}catch(InterruptedException e)
{
e.getStackTrace();
}
System.out.println("obj:"+Thread.currentThread().getName()+"sell tickets:"+tickets);
tickets--;
}
}
}
}
}
public synchronized void sell()
{
if(tickets>0)
{
try
{
Thread.sleep(10);
}catch(Exception e)
{
e.getStackTrace();
}
System.out.println("sell:"+Thread.currentThread().getName()+"sell tickets:"+tickets);
tickets--;
}
}
}我本意想叫2个线程分别进入同步方法和同步块同时打印,可是结果是只在同步快里打印,不知道何故
望高手赐教应该怎么改。。多谢多谢
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
SellTickets st=new SellTickets();
new Thread(st).start();
try
{
Thread.sleep(1);
}
catch(Exception e)
{
e.printStackTrace();
}
st.b=true;
new Thread(st).start();
}}
class SellTickets implements Runnable
{
int tickets=100;
Object obj=new Object();
boolean b=false;
public void run()
{
if(b==false)
{
while(true)
{
sell();
}
}
else
{
while(true)
{
synchronized(obj)
{ if(tickets>0)
{
try{
Thread.sleep(10);
}catch(InterruptedException e)
{
e.getStackTrace();
}
System.out.println("obj:"+Thread.currentThread().getName()+"sell tickets:"+tickets);
tickets--;
}
}
}
}
}
public synchronized void sell()
{
if(tickets>0)
{
try
{
Thread.sleep(10);
}catch(Exception e)
{
e.getStackTrace();
}
System.out.println("sell:"+Thread.currentThread().getName()+"sell tickets:"+tickets);
tickets--;
}
}
}我本意想叫2个线程分别进入同步方法和同步块同时打印,可是结果是只在同步快里打印,不知道何故
望高手赐教应该怎么改。。多谢多谢
解决方案 »
- NoClassDefFoundError,有没有终极解决方案啊?
- 机器的问题吗?,高手快来.
- 如何将主窗体参数传递给对话框?
- 求表示数字的正则表达式。
- 求推荐linux上面的数据库管理工具。
- 如何由坐标得到光滑的曲线?
- 做一个真正的非方形BUTTON,用UI行不行,还是从AbstractButton继承,或者更低层的类继承?
- 怎么取得两个Date类型的时间间隔呢?精确到天就可以了:)
- 一个User类,里面有int和String字段/域,但还有User字段/域,我不理解
- INSERT INTO 语句包含下列未知的字段名:“binID”。确定键入的名称是正确的, 然后重试。
- 急求,有谁会IBM这个啊?
- 新手求助~
st.b=true;这以后,
if(b==false)就不成立了,所以就有你看到的现象。执行else的代码了。
不知道说清楚没有啊!
郁闷
是不是你用的IDE出问题了