1)java多线程概述及常用方法

目录

1 )线程相关概念

2)多线程的创建

3) 线程的常用方法

4)线程的生命周期

5)多线程的优势

6)多线程的问题

7) 易忘点


1 )线程相关概念

  1. 进程:可以把一个程序理解为一个进程,如果QQ,微信 都能说是一个进程
  2. 线程:线程是进程一个执行单元,进程可以说成高速公路的收费口,而线程可以看成其中一个个窗口,进程可以说是由多个线程构成了。如常用的垃圾回收器,就可以看成一个单独的线程。
  3. 主线程与子线程: jvm运行main方法的线程就是主线程
  4. 串行,并发与并行

2)多线程的创建

java多线程就是创建一个Thread类,运行 start()方法就可以了。无伦通过继承Thread类还是实现Runnable接口核心上都是new Thread()

runnable只是thread的一个定义

public class Thr {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        
        thread.start();
        
        Thread thread2 = new Thread(myThread);
        thread2.start();
    }
}
class MyThread extends Thread{
    @Override
    public void run() {
        System.out.println("这是一个通过 extends Thread创建的子线程");
    }

}
class MyThread1 implements Runnable{
    @Override
    public void run() {
        System.out.println("这是一个通过 implements runnable创建的子线程");
    }
}

3) 线程的常用方法

线程的常用方法
currentThread能获取当前所在的线程,是一个本地navtie方法
isAlive活动状态就是线程已启动(start)并且尚未终止
sleep线程休眠(单位毫秒)
getid获取线程的编号,每启动一个线程,编号会自动分配
yieId释放CPU资源,这时如何有其它线程,则将cpu交给其使用,没有则继续使用cup
setPriority线程优先级(1-10),值越大理伦上占用cpu的时间就多,默认是5,不推荐使用
interrupt中断线程,理念上的,实际线程并没有终止,只是给线程打上了标记。只有wait、sleep、join三种阻塞状态之一时,interrupt()方法才起作用,否则只有等执行了wait()、join()、sleep()之后,才会抛出InterruptedException异常,抛出异常会清除中断标记。在start()方法前执行无效
isInterrupted()
判断是否有终止标记,返回boolean
setDaemon线程分为用户线程与守护线程,区别是如果不存在用户线程,守护线程也将关闭

4)线程的生命周期

5)多线程的优势

  • 提高系统的吞吐率:多线程编程可以使一个进程有多个并发的操作
  • 提高响应性:web服务器会采用一些专门的线程负责用户的请求处理,缩短了用户的等待时间
  • 充分利用多核处理器资源(如一个四核cpu单线程就只有一核在执行)

6)多线程的问题

  • 线程安全问题:多线程共享数据时,容易冲突
  • 线程活性:程序缺陷或者资源稀缺导入一真处于非RUNNABLE状态如 死锁,锁死,活锁,饥饿
  • 上下文切换:
  • 可靠性: 一个线程可能会导致jvm意外终止,其它线程也无法执行

7) 易忘点

  1. yield()与setDaemon(true)的作用
    
  2. interrupt() 的作用,概括就是interrupt()中断后,遇到wait(),sleep(),join()会抛出异常,同时会清除中断标记
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值