Java多线程教程

java中的多线程是一个同时执行多个线程的进程。线程是一个轻量级的子进程,是最小的处理单元。多进程和多线程都用于实现多任务处理。

但是,一般使用多线程而不是多进程,这是因为线程使用共享内存区域。它们不分配单独的内存区域以节省内存,并且线程之间的上下文切换比进程花费的时间更少。

Java多线程主要用于游戏,动画等。

1. Java多线程的优点

(1)它不会阻塞用户,因为线程是独立的,可以同时执行多个操作。
(2)可以一起执行许多操作,因此可以节省时间。
(3)线程是独立的,因此如果在单个线程中发生异常,它不会影响其他线程。

2. 多任务处理

多任务处理是同时执行多个任务的过程。使用多任务来利用CPU,多任务处理可以通过两种方式实现:

基于进程的多任务处理(多进程)
基于线程的多任务处理(多线程)

2.1. 基于进程的多任务处理(多进程)
  • 每个进程在内存中都有一个地址。 换句话说,每个进程分配一个单独的内存区域。
  • 进程是重量级的。
  • 进程之间的通信成本很高。
  • 从一个进程切换到另一个进程需要一些时间来保存和加载寄存器,内存映射,更新列表等。
2.2. 基于线程的多任务处理(多线程)
  • 线程共享相同的地址空间。
  • 线程是轻量级的。
  • 线程之间的通信成本很低。

注意:一次只执行一个线程。

Java Thread类

Java提供了Thread类来实现线程编程。 Thread类提供了在线程上创建和执行操作的构造函数和方法。 Thread类扩展了Object类并实现了Runnable接口。

Java线程方法

编号修辞符方法描述
1voidstart()它用于开始执行线程。
2voidrun()它用于为线程执行操作。
3static voidsleep()它会在指定的时间内休眠一个线程。
4static ThreadcurrentThread()它返回对当前正在执行的线程对象的引用。
5voidjoin()它等待线程死亡
6intgetPriority()它返回线程的优先级。
7voidsetPriority()它设置改变线程的优先级。
8StringgetName()它返回线程的名称。
9voidsetName()它用于设置线程的名称。
10longgetId()它返回线程的编号(id)。
11booleanisAlive()它测试线程是否存活。
12static voidyield()它使当前正在执行的线程对象暂停并允许其他线程临时执行。
13voidsuspend()它用于挂起线程。
14voidresume()它用于恢复挂起的线程。
15voidstop()它用于停止线程。
16voiddestroy()它用于销毁线程组及其所有子组。
17booleanisDaemon()它测试该线程是否是一个守护程序线程。
18voidsetDaemon()它将线程标记为守护程序或用户线程。
19voidinterrupt()它会中断线程。
20booleanisinterrupted()它测试线程是否被中断。
21static booleaninterrupted()它测试当前线程是否已被中断。
22static intactiveCount()它返回当前线程的线程组中活动线程的数量。
23voidcheckAccess()它确定当前运行的线程是否具有修改线程的权限。
24static booleanholdLock()当且仅当当前线程在指定对象上保存监视器锁时,它才返回true
25static voiddumpStack()它用于将当前线程的堆栈跟踪打印到标准错误流。
26StackTraceElement[]getStackTrace()它返回一个堆栈跟踪元素数组,表示线程的堆栈转储。
27static intenumerate()它用于将每个活动线程的线程组及其子组复制到指定的数组中。
28Thread.StategetState()它用于返回线程的状态。
29ThreadGroupgetThreadGroup()它用于返回此线程所属的线程组
30StringtoString()它用于返回此线程的字符串表示形式,包括线程的名称,优先级和线程组。
31voidnotify()它仅用于为等待指定对象的一个线程发出通知。
32voidnotifyAll()它用于向指定对象的所有等待线程发出通知。
33voidsetContextClassLoader()它为Thread设置上下文ClassLoader
34ClassLoadergetContextClassLoader()它返回线程的上下文ClassLoader
35static Thread.UncaughtExceptionHandlergetDefaultUncaughtExceptionHandler()它返回由于未捕获的异常而导致线程突然终止时调用的默认处理程序。
36static voidsetDefaultUncaughtExceptionHandler()它设置当线程由于未捕获的异常而突然终止时调用的默认处理程序。

java中的线程是什么

线程是一个轻量级的子进程,是最小的处理单元。它是一个单独的执行路径。
线程是独立的。 如果在一个线程中发生异常,则不会影响其他线程。 它使用共享内存区域。

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧浩海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值