From f84b14041830ea38f1f2eb6061c3722aedc0e836 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Thu, 9 Jan 2020 00:52:33 +0800 Subject: [PATCH] auto commit --- "docs/notes/Java \345\271\266\345\217\221.md" | 9 +++++---- docs/notes/Socket.md | 2 +- "notes/Java \345\271\266\345\217\221.md" | 9 +++++---- notes/Socket.md | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git "a/docs/notes/Java \345\271\266\345\217\221.md" "b/docs/notes/Java \345\271\266\345\217\221.md" index e4746d311e..9bdcbb8f7a 100644 --- "a/docs/notes/Java \345\271\266\345\217\221.md" +++ "b/docs/notes/Java \345\271\266\345\217\221.md" @@ -68,22 +68,23 @@ - 实现 Callable 接口; - 继承 Thread 类。 -实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以说任务是通过线程驱动从而执行的。 +实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以理解为任务是通过线程驱动从而执行的。 ## 实现 Runnable 接口 -需要实现 run() 方法。 - -通过 Thread 调用 start() 方法来启动线程。 +需要实现接口中的 run() 方法。 ```java public class MyRunnable implements Runnable { + @Override public void run() { // ... } } ``` +使用 Runnable 实例再创建一个 Thread 实例,然后调用 Thread 实例的 start() 方法来启动线程。 + ```java public static void main(String[] args) { MyRunnable instance = new MyRunnable(); diff --git a/docs/notes/Socket.md b/docs/notes/Socket.md index 64fc63008c..6138490cc6 100644 --- a/docs/notes/Socket.md +++ b/docs/notes/Socket.md @@ -208,7 +208,7 @@ else select 和 poll 的功能基本相同,不过在一些实现细节上有所不同。 - select 会修改描述符,而 poll 不会; -- select 的描述符类型使用数组实现,FD_SETSIZE 大小默认为 1024,因此默认只能监听 1024 个描述符。如果要监听更多描述符的话,需要修改 FD_SETSIZE 之后重新编译;而 poll 没有描述符数量的限制; +- select 的描述符类型使用数组实现,FD_SETSIZE 大小默认为 1024,因此默认只能监听少于 1024 个描述符。如果要监听更多描述符的话,需要修改 FD_SETSIZE 之后重新编译;而 poll 没有描述符数量的限制; - poll 提供了更多的事件类型,并且对描述符的重复利用上比 select 高。 - 如果一个线程对某个描述符调用了 select 或者 poll,另一个线程关闭了该描述符,会导致调用结果不确定。 diff --git "a/notes/Java \345\271\266\345\217\221.md" "b/notes/Java \345\271\266\345\217\221.md" index e4746d311e..9bdcbb8f7a 100644 --- "a/notes/Java \345\271\266\345\217\221.md" +++ "b/notes/Java \345\271\266\345\217\221.md" @@ -68,22 +68,23 @@ - 实现 Callable 接口; - 继承 Thread 类。 -实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以说任务是通过线程驱动从而执行的。 +实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以理解为任务是通过线程驱动从而执行的。 ## 实现 Runnable 接口 -需要实现 run() 方法。 - -通过 Thread 调用 start() 方法来启动线程。 +需要实现接口中的 run() 方法。 ```java public class MyRunnable implements Runnable { + @Override public void run() { // ... } } ``` +使用 Runnable 实例再创建一个 Thread 实例,然后调用 Thread 实例的 start() 方法来启动线程。 + ```java public static void main(String[] args) { MyRunnable instance = new MyRunnable(); diff --git a/notes/Socket.md b/notes/Socket.md index 64fc63008c..6138490cc6 100644 --- a/notes/Socket.md +++ b/notes/Socket.md @@ -208,7 +208,7 @@ else select 和 poll 的功能基本相同,不过在一些实现细节上有所不同。 - select 会修改描述符,而 poll 不会; -- select 的描述符类型使用数组实现,FD_SETSIZE 大小默认为 1024,因此默认只能监听 1024 个描述符。如果要监听更多描述符的话,需要修改 FD_SETSIZE 之后重新编译;而 poll 没有描述符数量的限制; +- select 的描述符类型使用数组实现,FD_SETSIZE 大小默认为 1024,因此默认只能监听少于 1024 个描述符。如果要监听更多描述符的话,需要修改 FD_SETSIZE 之后重新编译;而 poll 没有描述符数量的限制; - poll 提供了更多的事件类型,并且对描述符的重复利用上比 select 高。 - 如果一个线程对某个描述符调用了 select 或者 poll,另一个线程关闭了该描述符,会导致调用结果不确定。