JAVA多线程(一)
Java多线程基础
1、实现线程的方式
在Java中线程的实现无外乎两种方法:实现Runnable接口、继承Thread类:
实现Runnable接口
在上面的例子中,并没有使用直接使用Thread类的start()方法执行线程,而是交给了Executor来管理线程的执行。
Executors.newCachedThreadPool()方法创建一个ExecutorService(一个Executor的实现),Executor会为每个需要执行的任务创建一个线程并执行它;当Executor的shutdown()方法被调用后,就不能再把任务提交给Executor了,否则会报java.util.concurrent.RejectedExecutionException异常。
除了CachedThreadPools,还有FixedThreadPools和SingleThreadExecutor。三者的区别非常简单,CachedThreadPools根据需要创建足够多的线程;FixedThreadPools在初始化的时候就创建好固定数目的线程;SingleThreadExecutor就像是大小为1的FixedThreadPools,同一时间只会有一个线程在执行。
从下面的例子就可以看出来当有多个任务提交给SingleThreadExecutor时,这些任务将按照提交的顺序一个一个的执行;同样的道理也适合FixedThreadPools。
输出结果
输出结果
2 楼 koubai 2011-11-14 very well 3 楼 fd_zhaoshuo 2011-11-15 写的挺好的 4 楼 冬天秋天 2011-11-29 没有注意到java5的新特新,学习了。