站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题高分请教高手一个多线程的问题。。在线等

高分请教高手一个多线程的问题。。在线等

摘要: 高分请教高手一个多线程的问题。。在线等


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-#62;0)
{
try{
Thread.sleep(10);
}catch(InterruptedException e)
{
e.getStackTrace();
}
System.out.println(-#34;obj:-#34;+Thread.currentThread().getName()+-#34;sell tickets:-#34;+tickets);
tickets--;
}
}
}
}


}
public synchronized void sell()
{
if(tickets-#62;0)
{
try
{
Thread.sleep(10);
}catch(Exception e)
{
e.getStackTrace();
}
System.out.println(-#34;sell:-#34;+Thread.currentThread().getName()+-#34;sell tickets:-#34;+tickets);
tickets--;
}

}
}

我本意想叫2个线程分别进入同步方法和同步块同时打印,可是结果是只在同步快里打印,不知道何故
望高手赐教应该怎么改。。多谢多谢



晕,没人会嘛?


有高手嘛?


2个线程分别进入同步方法和同步块同时打印
自相矛盾
既然要同步就不能并发了


兄弟,你只创建了一个SellTickets对象,b要么等于true,要么等于false。
你把代码改一下:

public static void main(String[] args) {
// TODO 自动生成方法存根
SellTickets st = new SellTickets();
st.b = true;
new Thread(st).start();
try {
Thread.sleep(1);
} catch (Exception e) {
e.printStackTrace();
}
new Thread(new SellTickets()).start();

}



不要写2个同步块


↑返回目录
前一篇: 高分请教高手JDBC的问题,实在不知道那里错了。。在线等
后一篇: checkbox 提交问题?