Java 之线程

一、相关概念

程序:是操作系统中实现多个功能的代码块,也叫软件
进程:正在运行中的程序
多进程:同时运行多个进程
线程:是进程中的一个任务,顺序执行流
多线程:同时执行一个进程中的多个线程
并发:cpu只有一个,于是cpu在多个线程上来回切换进行执行的

二、线程的创建方式

    1)继承Thread类 -->重写run方法,调用start()开始执行
    2)实现Runnable接口 -->重写run方法,实例化一个Thread类,进行调用
    3)实现FutureTask来创建线程,用Callable来创建任务,最后将FutureTask对象传入到Thread对象中,启动线程运行

FutureTask<String> fu = new FutureTask<>(new Callable<String>{
    public String call() throws Exception{
        //写你要线程执行的内容,此方法相当于run方法
        return null;
    }
});

三、守护线程

     当前台线程结束后,后台线程自动结束。

     所有的线程默认是前台线程,让某个线程变成后台线程只需要调用他的setDaemon为true即可

四、sleep()方法和interrupt()方法

     void sleep(long ms)

     Thread类提供的一个静态方法。表示让当前线程休眠ms毫秒,在此过程中,如果该线程被打断,会抛出InterruptedException。如果休眠过程一直没有被打断,时间一到,线程的休眠状态自动解除,等待CPU的到来,一旦CPU过来,则继续执行后续代码

     void interrupt()

     手动打断某个正在休眠的线程,一旦调用该方法则正在休眠的线程会抛出InterruptedException

     (在匿名内部类中,要使用局部变量,那么这个变量必须使用final修饰)

五、Thread.currentThread()等方法;

     获取当前正在运行的线程

Thread t = Thread.currentThread();
//线程名
t.getName();
//线程ID
t.getId();
/**
*获取线程优先级
*1-10
*10最大
*1最小
*5正常
*理论上来说,优先级越高,获取CPU的概率越大
*/
t.setPriority(10);//t.setPriority(Thread.MAX_PRIORITY);
t.getPriority();
//线程是否活着
t.isAlive();
//该线程是不是守护线程,main线程不能设置为守护线程
t.isDaemon();
//该线程有没有被打断
t.isInterrupted();
//获取该线程的状态
t.getState();

//等待该进程死亡
t.join();
//线程等待
t.wait();
//解除等待,唤醒
t.notify();

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值