📅  最后修改于: 2020-09-26 13:23:40             🧑  作者: Mango
Java中的多线程是同时执行多个线程的过程。
线程是轻量级子进程,是最小的处理单元。多处理和多线程都用于实现多任务。
但是,我们使用多线程而不是多处理,因为线程使用共享内存区域。它们不分配单独的内存区域,因此节省了内存,并且线程之间的上下文切换比进程花费的时间更少。
Java多线程技术主要用于游戏,动画等。
1)它不会阻止用户,因为线程是独立的,您可以同时执行多个操作。
2)您可以一起执行许多操作,因此可以节省时间。
3)线程是独立的,因此,如果单个线程中发生异常,则不会影响其他线程。
多任务处理是同时执行多个任务的过程。我们使用多任务来利用CPU。可以通过两种方式实现多任务处理:
注意:每个线程至少需要一个进程。
线程是轻量级子进程,是最小的处理单元。这是一条单独的执行路径。
线程是独立的。如果一个线程中发生异常,则不会影响其他线程。它使用共享存储区。
如上图所示,线程在进程内部执行。线程之间存在上下文切换。操作系统内部可以有多个进程,并且一个进程可以具有多个线程。
注意:一次只执行一个线程。
Java提供Thread类来实现线程编程。 Thread类提供了构造函数和方法来在线程上创建和执行操作。线程类扩展了Object类并实现了Runnable接口。
S.N. | Modifier and Type | Method | Description |
---|---|---|---|
1) | void | start() | 它用于启动线程的执行 |
2) | void | run() | 它用于为线程执行操作 |
3) | static void | sleep() | 它在指定的时间内休眠一个线程 |
4) | static Thread | currentThread() | 它返回对当前正在执行的线程对象的引用 |
5) | void | join() | 它等待线程死亡 |
6) | int | getPriority() | 它返回线程的优先级 |
7) | void | setPriority() | 它改变线程的优先级 |
8) | String | getName() | 它返回线程的名称 |
9) | void | setName() | 它改变了线程的名称 |
10) | long | getId() | 它返回线程的id |
11) | boolean | isAlive() | 它测试线程是否处于活动状态 |
12) | static void | yield() | 它导致当前执行的thread对象暂停,并允许其他线程临时执行 |
13) | void | suspend() | 它用于挂起线程 |
14) | void | resume() | 它用于恢复挂起的线程 |
15) | void | stop() | 它用于停止线程 |
16) | void | destroy() | 它用于销毁线程组及其所有子组 |
17) | boolean | isDaemon() | 它测试该线程是否是守护线程 |
18) | void | setDaemon() | It marks the thread as daemon or user thread. |
19) | void | interrupt() | It interrupts the thread. |
20) | boolean | isinterrupted() | It tests whether the thread has been interrupted. |
21) | static boolean | interrupted() | It tests whether the current thread has been interrupted. |
22) | static int | activeCount() | It returns the number of active threads in the current thread’s thread group. |
23) | void | checkAccess() | It determines if the currently running thread has permission to modify the thread. |
24) | static boolean | holdLock() | It returns true if and only if the current thread holds the monitor lock on the specified object. |
25) | static void | dumpStack() | It is used to print a stack trace of the current thread to the standard error stream. |
26) | StackTraceElement[] | getStackTrace() | It returns an array of stack trace elements representing the stack dump of the thread. |
27) | static int | enumerate() | It is used to copy every active thread’s thread group and its subgroup into the specified array. |
28) | Thread.State | getState() | It is used to return the state of the thread. |
29) | ThreadGroup | getThreadGroup() | It is used to return the thread group to which this thread belongs |
30) | String | toString() | It is used to return a string representation of this thread, including the thread’s name, priority, and thread group. |
31) | void | notify() | It is used to give the notification for only one thread which is waiting for a particular object. |
32) | void | notifyAll() | It is used to give the notification to all waiting threads of a particular object. |
33) | void | setContextClassLoader() | It sets the context ClassLoader for the Thread. |
34) | ClassLoader | getContextClassLoader() | It returns the context ClassLoader for the thread. |
35) | static Thread.UncaughtExceptionHandler | getDefaultUncaughtExceptionHandler() | It returns the default handler invoked when a thread abruptly terminates due to an uncaught exception. |
36) | static void | setDefaultUncaughtExceptionHandler() | It sets the default handler invoked when a thread abruptly terminates due to an uncaught exception. |