@@ -187,7 +187,7 @@ public static ExecutorService newFixedThreadPool(int nThreads)
187187- 调用如下方法即可
188188 - Future< ; ?> submit(Runnable task)
189189 提交一个 Runnable 任务用于执行,并返回一个表示该任务的 Future。
190- - < ; T> Future< ; T> submit(Callable< ; T> task)
190+ - < ; T> Future< ; T> submit(Callable< ; T> task)
191191 提交一个返回值的任务用于执行,返回一个表示任务的未决结果的 Future
192192- 结束线程:shutdown() 关闭线程
193193
@@ -309,7 +309,7 @@ synchronized(对象){
309309``` java
310310package cn.itcast ;
311311
312- // 卖票程序的同步代码块实现示例
312+ // 卖票程序的同步代码块实现示例
313313class Ticket implements Runnable {
314314 private int num = 10 ;
315315 Object obj = new Object ();
@@ -362,7 +362,7 @@ class TicketDemo {
362362``` java
363363package cn.itcast ;
364364
365- // 卖票程序的同步代码块实现示例
365+ // 卖票程序的同步代码块实现示例
366366class Ticket implements Runnable {
367367 // 定义100张票
368368 private static int tickets = 10 ;
@@ -475,7 +475,7 @@ class SellTicket implements Runnable {
475475/*
476476 * 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,
477477 * 为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock。
478- *
478+ *
479479 * Lock: void lock(): 获取锁。 void unlock():释放锁。 ReentrantLock是Lock的实现类.
480480 */
481481public class SellTicketDemo {
@@ -718,11 +718,16 @@ Thread(ThreadGroup group,Runnable target, String name) // 给线程设置分组
718718 创建一个线程池对象,控制要创建几个线程
719719 - public static ExecutorService newSingleThreadExecutor():
720720 创建一个使用单个 worker 线程的 Executor
721- 这些方法的返回值是ExecutorService对象,该对象表示一个线程池,可以执行Runnable对象或者Callable对象代表的线程。它提供了如下方法:
722- - Future< ; ?>submit(Runnable task)
723- 提交一个 Runnable 任务用于执行,并返回一个表示该任务的 Future
724- - < ; T>Future< ; T> submit(Callable< ; T>task)
725- 提交一个返回值的任务用于执行,返回一个表示任务的未决结果的 Future。
721+
722+ 这些方法的返回值是ExecutorService对象,该对象表示一个线程池,可以执行Runnable对象或者Callable对象代表的线程。它提供了如下方法:
723+
724+ - Future<?> submit(Runnable task)
725+
726+ 提交一个Runnable任务用于执行,并返回一个表示该任务的 Future
727+
728+ - <T >Future<T > submit(Callable<T > task)
729+
730+ 提交一个Callable任务用于执行,返回一个表示任务的未决结果的Future
726731
727732# ** 8. 定时器的使用**
728733
@@ -742,7 +747,7 @@ Timer:一种工具,线程用其安排以后在后台线程中执行的任务
7427472 . 实现Runnable接口,new Thread(new Runnable(){…}){…};
7437483 . 实现Callable接口。和线程池结合。
744749
745- ## ** 9.2 实现Runnable好处**
750+ ## ** 9.2 实现Runnable好处**
746751
747752- 将线程的任务从线程的子类中分离出来,进行了单独的封装,实现数据和程序分离,按照面向对象的思想将任务封装成对象
748753- 避免了Java单继承的局限性。所以,创建线程的第二种方式较为常用
@@ -778,4 +783,4 @@ Timer:一种工具,线程用其安排以后在后台线程中执行的任务
778783| interrupt( ) | 中断线程 |
779784
780785## ** 9.6 线程的生命周期**
781- 新建,就绪,运行,阻塞(同步阻塞,等待阻塞,其他阻塞),死亡
786+ 新建,就绪,运行,阻塞(同步阻塞,等待阻塞,其他阻塞),死亡
0 commit comments