多线程 笔记一则

平时写的比较多的是单线程程序。

单线程从main函数开始执行,main执行完毕,程序就退出了,进程也就结束了。

 

今天看多线程前,有一种错误的观念在大脑中:如果在main函数中启动了另外的线程A

如果main函数执行完了,但线程A还没有执行完,这时程序会退出,整个程序进程也结束。

 

其实这是不正确的。如果main函数的线程结束了(即主线程结束),其他线程还未结束的话

程序会一直运行,直到所有线程都结束了,进程才会退出。

---------------------------------------------------

 

java中使用Thread类或子类创建线程对象。如果是Thread的子类,需要重写run方法。

或者实现Runnable接口,再将Runnable对象传到Thread对象中。

---------------------------------------------------

 

java线程中常用的方法

a. start()方法

   用于启动一个线程

b. run()方法

   当线程获得CPU资源时,就会调用run方法,当一个线程的run方法运行结束,线程就结束

c. sleep(int millsecond)

   该方法用于使得线程处于休眠状态。如果处于休眠状态的线程被打断,会抛出InterruptedException异常

d. isAlive()方法

   该方法用于判断线程是否处于死亡状态。在线程调用start前,isAlive方法返回false

   在线程的run方法结束之前,isAlive方法返回true

e. interrupt()方法

   该方法用于"吵醒"休眠的线程。当一个处于休眠的线程调用该方法,将会抛出InterruptedException异常

   从而结束休眠,重新排队等待CPU资源。

 

-------------------------------------

线程同步

   使用关键字synchronized

 

在同步方法中使用wait(),notify(),notifyAll()方法

   在多线程使用同一个synchronized方法时,如果某个线程发现条件不满足,不能继续运行下去,需要其他

线程先运行,等条件满足了,再继续运行的情况。这时,要先"让出资源",让后面的线程先插队执行,执行完

后再调用notify或nitifyAll通知处于等待的线程可以继续运行了。其他线程会遵循"先中断先继续"的原则。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值