就是线程a下有一个tickets,
线程b下也有一个tickets,
这时tickets变量为2个。
线程a访问的是a下的tickets,
而线程b访问的是b下的tickets,
所以造成了出票结果为200张。
为了避免这种情况,需要在声明的时候把他设置成全局变量
也就是前面要加入static修饰
把int tickets=100
修改为public static int tickets=100
这时无论生成几个线程tickets变量只有一个所有的线程同时对他执行 *** 作。
这时就能保证出票数为100张了
很简单, 出票里加锁就行了完整代码:
public class Test {public static void main(String[] args) {
for(int i=0 i<3 i++){
new Thread("线程 " + i){
public void run() {
while(true){
int p = getNumber()
if(p >0 ){
System.out.println(getName() + " 票号: " + p)
}else{
System.out.println("没票了")
break
}
}
}
}.start()
}
}
public static int num = 100 //总票数
/**
* synchronized 同步锁
* @return
*/
public static synchronized int getNumber(){
if(num >0){
return num -- //如果大于0, 则返回当前票并减少一张
}
return 0
}
}
1,用户名和密码需要在数据库建立一张表来存储,登录的时候验证用2,数据库的链接应该需要去下载一个mysql的jdbc的驱动,然后上网搜一下怎样写一个连接类就可以了
3,新用户注册其实就是往储存用户名和密码的表里面新增加一条数据,以后就可以用来登录验证用了
4,网上类似的程序很多,可以借鉴。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)