java多线程简单操作和实际项目开发如何写


先上代码:

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class ClassExecutorService {
	
	/**固定线程:cpu个数加一,让一个一直处于等待状态*/
	private static ExecutorService pool = Executors.newFixedThreadPool(5);
	/**
	 * newSingleThreadExecutor: 产生一个ExecutorService对象,这个对象只有一个线程可用来执行任务,若任务多于一个,任务将按先后顺序执行
	 * newCachedThreadPool(): 产生一个ExecutorService对象,这个对象带有一个线程池,线程池的大小会根据需要调整,线程执行完任务后返回线程池,供执行下一次任务使用。
	 * newFixedThreadPool(int poolSize):产生一个ExecutorService对象,这个对象带有一个大小为poolSize的线程池,若任务数量大于poolSize,任务会被放在一个queue里顺序执行
	 * newSingleThreadScheduledExecutor:产生一个ScheduledExecutorService对象,这个对象的线程池大小为1,若任务多于一个,任务将按先后顺序执行
	 * newScheduledThreadPool(int poolSize): 产生一个ScheduledExecutorService对象,这个对象的线程池大小为poolSize,若任务数量大于poolSize,任务会在一个queue里等待执行
	 * */
	/**单元测试*/
	public static  void main(String args[]) throws InterruptedException, ExecutionException{
		//execute(Runnable command):执行Ruannable类型的任务.
		pool.execute(new Runnable() {			
			public void run() {
				System.out.println("多线程执行");				
			}
		});
		//内部类的调用方式方式
		ClassExecutorService ces=new ClassExecutorService();
		//submit(task):可用来提交Callable或Runnable任务,并返回代表此任务的Future对象
		pool.submit(ces.new A());	
		//有返回值的线程:
		Future<?> re=pool.submit(ces.new B("执行完毕"));
		System.out.println(re.get().toString());
		
		pool.shutdown();
		/**
		 * shutdown():在完成已提交的任务后关闭服务,不再接受新任务
		 * shutdownNow():停止所有正在执行的任务并关闭服务。
		 * isTerminated():测试是否所有任务都执行完毕了。
		 * isShutdown():测试是否该ExecutorService已被关闭
		 * */
	}	
	
	/**该类要实现Runnable接口*/
	class A implements Runnable{
		public void run() {			
			System.out.println("类A执行");
			try {
				//线程休眠一秒Thread是类,也是实现Runnable
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}		
	}
	
	class B implements Callable<Object>{
		String param="";
		public B(String param) {
			this.param=param;
		}

		public Object call() throws Exception {
			return "返回值是:"+param;
		}
	}
		
}


很好理解这样的多线程:

一个实现了Runnable或者继承了Thread的类。在写完代码逻辑后,交给线程池处理的过程;

其中,在实际的操作中一定要有返回值的情况。一样的操作


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值