java 之 Thread

1.简介

一个进程可以有多个线程,例如打开一个手机app就是开了一个进程,在这个进程中可以使用多个线程;

线程就像是代码执行的路线,多线程就是多条代码可同时执行;例如百度搜索肯定是多线程的,不然只能一个人访问;在例如服务器的后台被客户端访问,肯定也是多线程处理客户端的请求的;迅雷下载也是多线程的;jvm也是多线程的,main线程和gc线程;

当然也有单线程的,例如:android的更新UI是单线程的

2.原理

  • 并发:开启多个线程,但是CPU只有一个啊。其实CPU是在这个多个线程中来回的切换,便面上是同时执行的。
  • 并行:除非是多核的CPU。所以多线程并行执行任务的话必须多核处理,才不会存在CPU在线程间切换;

3.实现:Thread

在java中Thread就是一个线程类

创建一个线程可以直接new Thread并实现Thread类中run方法;也可以传一个Runable接口进入,然后实现Runable接口中的run方法;

常用的方法:

getName();返回一个线程的名字,线程默认的编号,从0开始;注意这个名字不是线程的id;也可以在创建线程的时候传一名字,获取的就是这个名字;

currentThread();返回当前线程的对象;这是一个静态的方法;可以通过类名调用;

sleep();线程休眠,传一个时间进去,休眠时间;

join();当前线程暂停,等待指定线程执行结束的时候,当前线程再继续执行;就是插队,可以指定插队时间;

setPriority();设置线程的优先级;

wait();其实这个方法是Object的,所有的类都会有这个方法,那个线程调用了任何对象的wait()都会线程等待;

notify();这个方法也是Object的,所有的类都会有的,线程调用了任何对象的notify()都会唤醒等待监听器上的单个线程,如果有多个线程在等待的话,会随机唤醒一个;

notifyAll();这个方法也是Object的,所有的类都会有的,线程调用了任何对象的notify()都会唤醒等待监听器上的所有线程;

sleep();线程休眠,可以传入参数,休眠时间;

sleep和wait的区别:

  1. sleep必须传入参数,这个参数就是休眠的时间,过了时间线程就醒来了;wait可以传参也可以不传参,传参是过多少时间后休眠,不传参数的话就是立刻等待;
  2. 在同步方法和代码块中sleep不会释放锁子;但是wait会释放锁子;

4.线程同步;

线程并发的时候不想让cpu在执行某一块代码的时候cpu切换,使用的同步代码块;

 public void hahah()
    {
       
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值