A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侠客梦的懒猫 中级黑马   /  2013-12-16 12:03  /  1245 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ExecutorService es=Executors.newSingleThreadExecutor(); es.execute(new Runnable(){
                        public void run() {
                                // TODO Auto-generated method stub
                                for(int i=0;i<1000;i++)
                                {
                                        try{
                                        Thread.sleep((new Random().nextInt(10)+1)*1000);
                                        }catch(Exception e){
                                               
                                                e.printStackTrace();
                                        }
                                        //其实这里可以加final,但是这又有一种新的方法
                                        cars.add(Road.this.name+"_"+1);
                                }
                               
                        }
                         
                 });

对于这个 我们直接可以新建一个class extends Runnable,这个有啥区别?

评分

参与人数 1黑马币 +5 收起 理由
乔兵 + 5

查看全部评分

2 个回复

倒序浏览
Executors.newSingleThreadExecutor()返回一个线程池(这个线程池只有一个线程)
,这个线程池可以在线程死后(或发生异常时)重新启动一个线程来替代原来的线程继续执行下去。
回复 使用道具 举报
ExecutorService es=Executors.newSingleThreadExecutor(); es.execute(new Runnable(){
这是java5的线程库,是从线程池中启动一个线程的意思。它可以实现线程的异步启动。
对于创建一个类来implements这个接口,也可以实现,但是要在调用该线程时,初始化该线程类,并启动start()方法。没有使用匿名类方便。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马