`

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();
		}
	}
}

 

   完整例子见附件。

 

分享到:
评论

相关推荐

    在spring boot中使用java线程池ExecutorService的讲解

    今天小编就为大家分享一篇关于在spring boot中使用java线程池ExecutorService的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Java 线程池ExecutorService详解及实例代码

    主要介绍了Java 线程池ExecutorService详解及实例代码的相关资料,线程池减少在创建和销毁线程上所花的时间以及系统资源的开销.如果不使用线程池,有可能造成系统创建大量线程而导致消耗系统内存以及”过度切换

    运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接JAVA语言

    运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接

    徒手实现线程池-1

    目的是是简化并发编程 ExecutorService(执行器)Java两种基础线程池普通:ThreadPoolExecutor定时ScheduledThread

    Java线程池以及Lambda表达式简单总结

    1. 线程池的使用 public static ExecutorService newFixedThreadPool(int nThreads); 得到一个线程对象,初始化参数是要求的当前...import java.util.concurrent.ExecutorService; import java.util.concurrent.Execut

    深入java线程池的使用详解

    在Java 5.0之前启动一个任务是通过调用Thread类的start()方法来实现的,任务的提于交和执行是同时进行的,如果你想对任务的执行进行调度或是控制 同时执行的线程数量就需要额外编写代码来完成。5.0里提供了一个新的...

    ExecutorService线程池

    本程序实现了ExecutorService线程池,内置说明txt说明,可以参考

    运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接.doc

    运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接.doc

    java-code-format:重新格式化Java源代码-Form source code

    Java代码格式 提高 格式化Java文件/目录 List&lt; String&gt; formatSourceFile&#... java -jar /path/to/google-java-format-1.6-all-deps.jar &lt;options&gt; [files...] 格式化程序可以作用于整个文件,有限的行( --lines ),

    java并发工具包 java.util.concurrent中文版用户指南pdf

    1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...

    java socket线程池

     //Runtime的availableProcessors()方法返回当前系统的CPU的数目 //系统的CPU越多,线程池中工作线程的数目也越多 executorService= Executors.newFixedThreadPool(   Runtime.getRuntime()....

    java ExecutorService使用方法详解

    主要为大家详细介绍了java ExecutorService使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    java并发工具包详解

    1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...

    Java ExecutorService四种线程池使用详解

    主要介绍了Java ExecutorService四种线程池使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    ExecutorService用法详解.doc

    接口 java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。壹個 ExecutorService 实例...事实上,在 java.util.concurrent 包中的 ExecutorService 的实现就是壹個线程池的实现。

    Java并发工具包java.util.concurrent用户指南中英文对照阅读版

    1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...

    使用Java匿名内部类实现一个简单的线程池.txt

    这段代码实现了一个简单的线程池ExecutorService,其中使用了Java的匿名内部类。在类的构造方法中,首先创建了一个固定大小为5的线程池。然后通过循环提交了10个任务到线程池中执行。每个任务都是一个匿名内部类实现...

    Java并发工具包java.util.concurrent用户指南中英文对照阅读版.pdf

    java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...

    更好的使用Java线程池

     ExecutorService基于池化的线程来执行用户提交的任务,通常可以简单的通过Executors提供的工厂方法来创建ThreadPoolExecutor实例。  线程池解决的两个问题:1)线程池通过减少每次做任务的时候产生的性能消耗来...

Global site tag (gtag.js) - Google Analytics