线程池、时间片线程

 
 

下面的代码说明的是线程池中的方法的实现的方式

package lt.test01;

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

public class DemoThreadPool {
    public  static  void  main(String[] args){
        //ExecutorService es = Executors.newFixedThreadPool(5);//一池5线程
        ExecutorService es = Executors.newCachedThreadPool();//自动创建所需要的线程池
        //ExecutorService es = Executors.newSingleThreadExecutor();

        Future<Integer> result = null;
        try {
            for (int i = 1; i <= 20000; i++) {
                result = es.submit(new Callable<Integer>() {
                    @Override
                    public Integer call() throws Exception {
                        Thread.sleep(20);
                        System.out.print(Thread.currentThread().getName()+"\t\n");
                        return new Random().nextInt(5);
                    }

                });
                System.out.print("当前的使用次数是:"+i+"\n");
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            es.shutdown();
        }
    }
}
 
 

下面的代码说名的是实现的是线程的时间化的管理

package lt.test01;

import java.util.Random;
import java.util.concurrent.*;

public class PoolThreadTest1 {
    public  static  void  main(String[] args){
        ScheduledExecutorService service = Executors.newScheduledThreadPool(5);
        ScheduledFuture<Integer> result = null;
        try {
            for (int i = 1; i <= 20 ; i++) {
                /**
                 * 需要注意的地方是
                 * 实现的callable的接口
                 * 然后接口中的类型和上面的类型要定义的一致
                 * 要不然会产生错误
                 */
                result = service.schedule(new Callable<Integer>() {
                    @Override
                    public Integer call() throws Exception {
                        System.out.print(Thread.currentThread().getName()+"\t\n");
                        return new Random().nextInt(5);
                    }
                },2,TimeUnit.SECONDS);

                System.out.print("*** \t"+result+"\n");
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            service.shutdown();
        }

    }
}



猜你喜欢

转载自blog.csdn.net/qq_40408317/article/details/80104400