lambda表达式 与 多线程卖票

直接献上简陋的代码,具体相关解释会在注释中对应给出。
学习严格按照之前所写道的:
“在高内聚低耦合的前提下实现 线程 操作 资源类”

//首先是资源类部分,在资源类中买票的功能内聚(高内聚)
class ticket{
	private int numbers = 15 ; //以15张票为例,使用private保证对应的封装性
	Lock lock = new ReentrantLock();//创建一个Lock对象实例lock,用以保障线程的安全
	lock.lock();//上锁
		try{
		if (numbers > 0){
		sysout.out,println(Thread.currentThread().getName()+"卖出第"+numbers--+"张,还剩下"+numbers+"张");//输出相关线程信息及剩余票数信息
}
}	
		finally{
		lock.unlock();//释放锁,释放锁占用的相关资源
}
}

以上是对应的资源类,以及对资源类的操作方法;下面是关于多线程的相关实现:
1.1 显式匿名内部类实现:

public sale{
	public static void main (String[] args){
		ticket tit = new ticket();
		//使用匿名内部类进行实现线程
		 new Thread(new Runnable() { 
		 //覆写run方法
		  public void run() {    
		  for(int i = 1; i<=30 ; i++) {//对应A线程对资源类的操作
	    	 tit.sale(); //调用操作
  	  }  }  }, "A").start();   //名字叫做A的线程,并调度执行
}
}
//之后进行创建多个线程时仅用修改名字即可;

1.2 λ表达式实现:

//实质上也是采用匿名内部类的方式进行实现,不过在写法上明显简洁了不少
public sale{
 public static void main (String[] args){
  ticket tit = new ticket();
 	 new Thread(()->{
  	 for(int i = 1; i<=130 ; i++) {    
     tit.sale();   }  }"Sjz").start();
  }}

注意: 一个线程并不是一经创建及调用就会立刻执行,只有在一个线程得到了相应的一些资源及cpu使用权力方才会进行执行!!

后续还有 继承Thread 、 实现 callable 接口 、 实现runable接口、线程池等相关内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值