线程返回值以及线程锁

线程返回值以及线程锁


public String Threads() {
	Object[] obj = null;//获取从线程中返回的数据
	ExecutorService exs=Executors.newCachedThreadPool();  
        ArrayList<Future<Object[]>> al=new ArrayList<Future<Object[]>>(); 
        //submit()方法返回一个Futrue对象,可以通过调用该对象的get方法取得返回值。 
        al.add(exs.submit(new Thread(string,class)));  //new Thread(string,class)是调用的有参重载那个方法
        for(Future<Object[]> fs:al){  
            try {  
               obj=fs.get();//从线程中返回的数据放到obj中
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            } catch (ExecutionException e) {  
                e.printStackTrace();  
            }  
        }  
	return  null;
}


实现一个Thread类


//线程类,必须实现Callable接口,返回类型可以随意定义,根据需求定义
public class Thread implements Callable<Object[]>{
	//如果需要向线程中传值,用private定义一下便可,然后在实现一个有参重载方法
	private String string;//传的值
	private Class class;//传的实体类
	
	public Thread(String string, Class class) {
		this.string = string;
		this.class = class;
	}
	
	@Override
	public Object[] call() throws Exception { 
		//进入线程锁中执行具体的方法。
		//如果不需要线程锁,在abc方法中把synchronized去掉便可
		return abc(string, class);
	}
	
	//synchronized是锁的意思(如有不明白在网上查询一下),我在此处处理高并发。
	//此方法是线程进来以后如果有线程在执行此方法,那么该线程必须等待,等上一个线程走完以后,该线程才能执行该方法。
	//举个例子:奥迪,宝马,奔驰同时进入到该线程中,奥迪运气好,奥迪先进入到abc方法中,那么宝马和奔驰必须等奥迪出来,宝马才能进去,等宝马出来奔驰才能<span style="white-space:pre">		</span>进去,当然谁先进谁先出是线程自己分配的。
	public static synchronized Object[] abc(String string, Class class) {
		//此处是你要处理的代码,最后放入obj中返回便可
		return obj; 
	} 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值