//线程函数:MyThread3.java
/*** 售票线程
* 进行售票线程的模拟,利用Runnable接口实现重写run方法,保证线程的安全
*@author[Light](必须)
*@see[run()](可选)
*@since[version 1.0] (必须)*/
public class MyThread3 implementsRunnable{//售票数
int num=40;//设置锁旗标
Object lock=newObject();
@Overridepublic voidrun() {//TODO Auto-generated method stub//循环开始售票
while(num>0){//进行加锁,获取锁
synchronized(lock) {//判断是否售完
if(num>0)
{//模拟售票过程
System.out.println(Thread.currentThread().getName()+ "卖出第"+num+"张票");
num--;
}try{//进行睡眠,暂时放弃cpu的使用,但不释放锁
Thread.currentThread().sleep(500);
}catch(InterruptedException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
//主函数MyTest.java/************************************************************
Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.
FileName: Mytest.java
Author: Light
Version : version1.0
Date: 2018/7/11
Description: //模拟售货员售票
Version: // 版本信息
1.开启两个进程,通过Runnable接口实现多线程
2.保证两个进程公用一个售票参数
Function List: // 主要函数及其功能
1.Thred3售票线程
2.Thred3.start();开启线程
History:
// 历史修改记录
Light 2018/7/11 1.0 build this moudle
***********************************************************/
public classMyTest {//主函数
public static voidmain(String[] args) {//TODO Auto-generated method stub//创建MyThread3线程
Runnable myThread3=newMyThread3();//开启两个线程
Thread t1=newThread(myThread3);
Thread t2=newThread(myThread3);
t1.start();
t2.start();
}
}