[多线程]线程的基本概念、常用方法以及线程优先级说明

基本概念

程序:是为完成特定任务,用某种语言编写的一组指令的集合。指一段静态的代码,静态对象

进程:是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程(生命周期)

线程:进程可进一步细化为线程,是程序内部的一条执行路径

系统在运行时会为每个进程分配不同的内存区域(方法区、堆空间),而线程则拥有独立的运行栈和程序计数器(pc)。一个进程中的多个线程共享堆空间与方法区。

一个Java应用程序java.exe其实至少有三个线程:main()主线程,gc()垃圾回收线程,异常处理线程。如果发生异常,会影响主线程

并行:多个CPU同时执行多个任务

并发:一个CPU(采用时间片)同时执行多个任务

Thread中的常用方法

1. start():启动当前线程,调用当前线程的run()
2. run():通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中
3. currentThread():静态方法,返回执行当前代码的线程
4. getName():获取当前线程的名字
5. setName():设置当前线程的名字
6. yield():释放当前cpu的执行权
7. join():在线程a中调用线程b的join(),此时线程a就进入阻塞状态,直到线程b完全执行完以后,线程a才会结束阻塞状态
8. stop():已过时。当执行此方法时,强制结束当前线程
9. sleep(long millitime):让当前线程"睡眠"指定的millitime毫秒。在指定的millitime毫秒时间内,当前线程是阻塞状态
10. isAlive():判断当前线程是否存活

线程优先级

1.
MAX_PRIORITY:10
MIN_PRIORITY:1
NORM_PRIORITY:5  --> 默认优先级
2.如何获取和设置当前线程的优先级:
  getPriority():获取线程的优先级
  setPriority(int p):设置线程的优先级

设置分线程与主线程的优先级

        h1.setPriority(Thread.MAX_PRIORITY);//设置分线程的优先级
        Thread.currentThread().setPriority(Thread.MIN_PRIORITY);//设置主线程的优先级

 分线程实现100以内偶数输出

        for (int i = 0;i < 100;i++){
            if (i % 2 == 0){

                System.out.println(Thread.currentThread().getName() + ":" + 
        Thread.currentThread().getPriority() + ":" + i);
            }

         }

主线程实现100以内奇数输出

for (int i = 0;i < 100;i++) {
            if (i % 2 != 0) {
                System.out.println(Thread.currentThread().getName() + ":" + 
            Thread.currentThread().getPriority() + ":" + i);
            }

        }

运行 

分线程1:10:0
主线程:1:1
分线程1:10:2
主线程:1:3
分线程1:10:4
主线程:1:5
分线程1:10:6
主线程:1:7
分线程1:10:8
主线程:1:9
分线程1:10:10
主线程:1:11
分线程1:10:12
主线程:1:13
分线程1:10:14
主线程:1:15
分线程1:10:16
主线程:1:17
分线程1:10:18
主线程:1:19
分线程1:10:20
主线程:1:21
分线程1:10:22
主线程:1:23
分线程1:10:24
主线程:1:25
分线程1:10:26
主线程:1:27
分线程1:10:28
主线程:1:29
分线程1:10:30
主线程:1:31
分线程1:10:32
主线程:1:33
分线程1:10:34
主线程:1:35
分线程1:10:36
主线程:1:37
分线程1:10:38
主线程:1:39
分线程1:10:40
主线程:1:41
分线程1:10:42
主线程:1:43
分线程1:10:44
主线程:1:45
分线程1:10:46
主线程:1:47
分线程1:10:48
主线程:1:49
分线程1:10:50
主线程:1:51
分线程1:10:52
主线程:1:53
分线程1:10:54
主线程:1:55
分线程1:10:56
主线程:1:57
分线程1:10:58
主线程:1:59
分线程1:10:60
主线程:1:61
分线程1:10:62
主线程:1:63
分线程1:10:64
主线程:1:65
分线程1:10:66
主线程:1:67
分线程1:10:68
主线程:1:69
分线程1:10:70
主线程:1:71
分线程1:10:72
主线程:1:73
分线程1:10:74
主线程:1:75
分线程1:10:76
主线程:1:77
分线程1:10:78
主线程:1:79
分线程1:10:80
主线程:1:81
分线程1:10:82
主线程:1:83
分线程1:10:84
主线程:1:85
分线程1:10:86
主线程:1:87
分线程1:10:88
主线程:1:89
分线程1:10:90
主线程:1:91
分线程1:10:92
主线程:1:93
分线程1:10:94
主线程:1:95
分线程1:10:96
主线程:1:97
分线程1:10:98
主线程:1:99

说明:高优先级的线程要抢占低优先级线程cpu的执行权。但只是从概率上讲,高优先级的线程高概率的情况下被执行,并不意味着只有当高优先级的线程执行完以后,低优先级的线程才执行 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值