class Xc8 implements Runnable{
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的铁山网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
public static int chepiao=100;
String a=new String("1");//字符串随意定义,定义在函数的上方
public void run(){
while(true){
//要么全部执行完,要么就全部不执行
synchronized (a){//既可以修饰代码块,又可以修饰函数,修饰函数时不需要参数。默认的是this
if(chepiao0){
System.out.println("第"+Thread.currentThread().getName()+"个车站正在售票售第"+(101-chepiao)+"张车票");
--chepiao;
try{
Thread.sleep(200);
}catch (InterruptedException e) {
}
}
else{
break;
}
}
}
}
}
public class maipiao {
public static void main(String[] args) {
Xc8 xc1=new Xc8();
Thread ee=new Thread(xc1);
ee.start();
Thread rr=new Thread(xc1);
rr.start();
}
}
这是我改过的代码,说一下你的程序的问题:
你原来在主函数中实例化了两个 类Xc8,这时你创建的两个线程就没有使用同一目标对象。也就是说,Xc8 中的字符串a有在内存中有两个!那么 synchronized (a)所修饰的代码块就没有起作用!尽管chepiao 这个变量只有一个!
我在那线程类中加了个休息语句,只因为对于cpu来说,这种输出语句太简单,如果不让线程睡觉,效果不明显!
请采纳,谢谢!
swing 是吧, eclipse中的swing插件可以让你像在WINFORM中那样托控件.
但是, 一楼是正解, 这个需要RMB的.
你说的这个程序应该是不难的,只不过N久没有写过javaswing 了
还有就是java没有多继承的,只有多实现接口的
继承的关键字是:extends
接口的关键字是:interface
public class TicketsSystem {
public static void main(String[] args) {
SellThread st = new SellThread();
Thread th1 = new Thread(st);
th1.start();
Thread th2 = new Thread(st);
th2.start();
Thread th3 = new Thread(st);
th3.start();
}
}
class SellThread implements Runnable {
private int number=10;
String s = new String();
public void run() {
while (number 0) {
synchronized (s) {
System.out.println("第" + number + "个人在"
+ Thread.currentThread().getName() + "买票");
}
number--;
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
synchronized (s)的s是synchronized 的参数,synchronized 的参数可以是任意对象,我定义了一个String类型的对象s,方便看程序而已。
但是要注意,s的定义一定要在run方法之外,不然还会出现负数。因为你启动了3个线程,每个线程都调用了run方法,在每个线程就会在run方法里边产生自己的s对象,一共会产生3个,达不到同步的目的。
如果还有不明白的,可以继续问。