编写一个Java源程序,在程序中建立一个含10个整型(int)元素的一维数组,对数组中的每个元素赋值,然后按下标的逆序输出,我好像抄的一样的啊,他们都能运行
第十行,数组下标越界了,应该是这里吧,总共十个元素,下标就是从0到9,逆序的话下标从9到0依次循环输出就行了,你这样的话直接下标10开始,就出错了 改成 array.length - 1
同步方法控制案例的数据安全
在方法上通过synchronized关键字修饰方法
成员方法
锁的是调用成员方法的对象
静态方法
锁的是类的Class对象
优点: 简单,直接同步整个方法体
缺点: 代码范围太大,效率较低
public class Class002_Web12306 implements Runnable{
//共享资源 100张票
int tickets = 100;
@Override
public void run() {
while(true){
if(!buyTicket()){
break;
}
//方法cpu切换调度的可能性
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//一次购票的过程,每一个线程排队购票
//返回值 : true-->继续购买 false->结束购买
public synchronized boolean buyTicket(){
if(tickets<=0){
return false;
}
/*模拟一次购票的时间*/
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"正在购买第"+tickets--);
return true;
}
public static void main(String[] args) {
Class002_Web12306 web = new Class002_Web12306();
//创建线程
Thread th1 = new Thread(web,"张三");
Thread th2 = new Thread(web,"李四");
Thread th3 = new Thread(web,"王五");
//线程开启
th1.start();
th2.start();
th3.start();
}
}