继承Thread类,重写run()方法,调用start开启线程 (不建议使用:避免OOP单继承局限性)实现Runnable接口,重写run()方法,往Thread对象丢入Runnable实现类,调用start开启线程(推荐,方便同一个对象被多个线程使用)实现Callable接口线程开启不一定立即执行,有CPU调度执行利用commons io的jar包下载图片:FileUtils.copyUrlToFile()