日期: 2022-09-21 05:28:07 浏览数:6

上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
西安爱采购会员/58同城会员账户/百度竞价开户/百家号注册运营/推广公司网站-网站营销全网推广

):使用Runnable接口创建线程池
使用线程池中线程对象的步骤:
1、创建线程池对象
2、创建 Runnable 接口子类对象
3、提交 Runnable 接口子类对象
4、关闭线程池
Test.java 代码如下:
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class Test {
public static void main(String[] args) {
//创建线程池对象 参数5,代表有5个线程的线程池
ExecutorService service = Executors.newFixedThreadPool(5);
//创建Runnable线程任务对象
TaskRunnable task = new TaskRunnable();
//从线程池中获取线程对象
service.submit(task);
System.out.println("----------------------");
//再获取一个线程对象
service.submit(task);
//关闭线程池
service.shutdown();
}}TaskRunnable.java 接口文件如下:
public class TaskRunnable implements Runnable{
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
System.out.println("自定义线程任务在执行"+i);
}
}}2)使用Callable接口创建线程池
Callable接口:与Runnable接口功能相似,用来指定线程的任务。其中的call()方法,用来返回线程任务执行完毕后的结果,call方法可抛出异常。
ExecutorService:线程池类
<T> Future<T> submit(Callable<T> task):获取线程池中的某一个线程对象,并执行线程中的 call() 方法
Future 接口:用来记录线程任务执行完毕后产生的结果。线程池创建与使用
使用线程池中线程对象的步骤:
1、创建线程池对象
2、创建 Callable 接口子类对象
3、提交 Callable 接口子类对象
4、关闭线程池
Test.java 代码如下:
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class Test{
public static void main(String[] args) {
ExecutorService service = Executors.newFixedThreadPool(3);
TaskCallable c = new TaskCallable();
//线程池中获取线程对象,调用run方法
service.submit(c);
//再获取一个
service.submit(c);
//关闭线程池
service.shutdown();
}}TaskCallable.java 接口文件如下:
import java.util.concurrent.Executors;
public class Test{
public static void main(String[] args) {
ExecutorService service = Executors.newFixedThreadPool(3);
TaskCallable c = new TaskCallable();
//线程池中获取线程对象,调用run方法
service.submit(c);
//再获取一个
service.submit(c);
//关闭线程池
service.shutdown();
}
}
TaskCallable.java 接口文件如下:
import java.util.concurrent.Callable;
public class TaskCallable implements Callable<Object>{
@Override
public Object call() throws Exception {
for (int i = 0; i < 1000; i++) {
System.out.println("自定义线程任务在执行"+i);
}
return null;
}
}
dg5uw
dg5uw
159***75112@139.com
5年前 (2018-03-05)
dg5uw
159***75112@139.com
38
线程池练习:返回两个数相加的结果
要求:通过线程池中的线程对象,使用Callable接口完成两个数求和操作
Future 接口:用来记录线程任务执行完毕后产生的结果。
线程池创建与使用:get() 获取 Future对象中封装的数据结果
ThreadPoolDemo.java 文件代码如下:
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class ThreadPoolDemo {
public static void main(String[] args) throws InterruptedException, ExecutionException {
//创建线程池对象
ExecutorService threadPool = Executors.newFixedThreadPool(2);
//创建一个Callable接口子类对象
//MyCallable c = new MyCallable();
MyCallable c = new MyCallable(100, 200);
MyCallable c2 = new MyCallable(10, 20);
//获取线程池中的线程,调用Callable接口子类对象中的call()方法, 完成求和操作
//<Integer> Future<Integer> submit(Callable<Integer> task)
// Future 结果对象
Future<Integer> result = threadPool.submit(c);
//此 Future 的 get 方法所返回的结果类型
Integer sum = result.get();
System.out.println("sum=" + sum);
//再演示
result = threadPool.submit(c2);
sum = result.get();
System.out.println("sum=" + sum);
//关闭线程池(可以不关闭)
}
}
MyCallable.java 接口文件代码如下:
import java.util.concurrent.Callable;
public class MyCallable implements Callable<Integer> {
//成员变量
int x = 5;
int y = 3;
//构造方法
public MyCallable(){
}
public MyCallable(int x, int y){
this.x = x;
this.y = y;
}
@Override
public Integer call() throws Exception {
return x+y;
}
}
dg5uw
dg5uw
159***75112@139.com
5年前 (2018-03-05)
0℃space
960***125@qq.com
26
进程和线程的区别
西安爱采购会员/58同城会员账户/百度竞价开户/百家号注册运营/推广公司网站-网站营销全网推广
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)