java线程池工具--ExecutorService,简单例子

     java多线程在java编程过程中有很多的用处,面试的时候也经常被问到,这里就线程池做一个简单的例子:通过线程池操作User,代码如下

    

    1、实体类:User

package com.entity;

//实体类
public class User {
	private int id ;
	private String name;
	private String age;
	private String address;
	
	public User(){
		
	}
	
	public User(String name,String age,String address){
		this.name = name;
		this.age = age;
		this.address = address;
	}
	
	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public String getAge() {
		return age;
	}
	
	public void setAge(String age) {
		this.age = age;
	}
	
	public String getAddress() {
		return address;
	}
	
	public void setAddress(String address) {
		this.address = address;
	}
}

 2、数据库操类:UserDao

package com.dao;

import com.entity.User;

public class UserDao {
	//添加用户
	public void addUser(User user){
		//这个方法用来操作数据,代码省,做简单的输出
		System.out.println(user.getName());
		System.out.println(user.getAge());
	}
}

   3、测试调用类:UserServer

package com.serverlet;

import com.entity.User;
import com.thread.ThreadPool;
import com.thread.UserAddThread;

/**
 * 用户操作类,线程池测试
 */
public class UserServer {
	 //添加用户
	 public void addUser() throws Exception{
		 User entity = new User("熊敏","28","深圳");
		 
		 //将用户信息塞到线程池
		 ThreadPool.getInstance().execute(new UserAddThread(entity));
	 }
	 
	 
	 //测试
	 public static void main(String[] args) throws Exception {
		UserServer userServer = new UserServer();
		 
		for (int i = 0; i < 10; i++) {
			userServer.addUser();
		}
	 }
}

   4、线程池类:ThreadPool

package com.thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 实现线程池,的方法
 */
public class ThreadPool {
	//JDK工具类,创建一个线程池,这个线程池最大的链接数为10
	final ExecutorService exec = Executors.newFixedThreadPool(10);
	
	private static ThreadPool pool = new ThreadPool();
	
	private ThreadPool(){
	}

	public static ThreadPool getInstance(){
		if(pool == null){
			return pool = new ThreadPool();
		}
		return pool;
	}
	
	
	/**
	 * 执行线程任务
	 * @param command  一个需要执行的线程任务
	 */
	public void execute(Runnable command) throws Exception{
		exec.submit(command);
	}
}

   

   5、线程类(线程任务类):UserAddThread

package com.thread;

import com.dao.UserDao;
import com.entity.User;

//线程类
public class UserAddThread implements Runnable{
	UserDao userDao = new UserDao();
	
	private User user;
	
	//初始化时,需要将user也实例化
	public UserAddThread(User user){
		this.user = user;
	}  
	
	
	//执行任务
	@Override
	public void run() {
		try{
			userDao.addUser(user);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}

   完整例子见附件。

猜你喜欢

转载自x125858805.iteye.com/blog/2191873