java线程的学习

thread 线程
线程,被拿起来放下了N次,这是第N+1次,希望不要在丢下了,其实真的是因为每天做着ctrl c和ctrl v...外加set和get...
没有深入的使用过,也不能像众多大神那般对线程的概念及使用理解的那么深入,这只是一篇菜鸟的学习笔记,备忘录级别而已。
首先,线程的概念,定义为进程中的一个实体,这事儿好理解,我们每天面对着windows,开了机不知道跑了多少线程....
点开某个exe程序是开启一个进程,一个进程中可以包含N个线程。
个人理解的常用的方法,run(),start(),setPriority(),join(),yield(),sleep(),interrupt()....
run(),这是线程类,或者说线程接口的入口方法,Thread类是实现了Runnable接口的,所以它必然实现了run()方法,当我们启动某一个
线程时,就意味着在当前的独立线程中调用对象的run()方法。
start(),使该线程开始执行,要注意,这是Java 虚拟机调用该线程的 run 方法。所以结果是两个线程的启动,即当前线程,及另一个
线程(被执行了run()方法的)。
setPriority(int newPriority), 这个简单来说,就是设置线程的优先级。
join(),等待当前调用该方法的线程终止。也就是说,可能当前多个线程在执行,当线程X调用join()后(X.join()),将等X线程执行完毕
后,再执行其他。
yield(),暂停当前正在执行的线程对象,并执行其他线程。我自己理解,这个方法和join()形成对立,join()是我执行完了你才能执行,
yield()则是我现在就停下,你先执行。
sleep(long millis),学习线程的过程中应该会频繁的使用的方法,在指定的毫秒数内让当前正在执行的线程休眠。往往在线程练习中我们
已经熟练使用了,不过这个方法,似乎在日常的开发中用到的极少?大家都这么说...除非你是一名底层系统级程序员。
interrupt(),中断线程。对应的还有interrupted(),测试当前线程是否已经中断。线程的中断状态由该方法清除。还有isInterrupted(),
测试线程是否已经中断。线程的中断状态 不受该方法的影响。


除了上述的线程的常用方法,我们在实际应用过程中,经常会写到两个方法:wait(),notify()。
值得注意的是,wait()方法,并不是Thread类或Runnable接口的,而是Object类的方法,基类的方法。
wait(),当前的线程等待,直到其他线程调用此对象的 notify()。所以wait()方法往往是在某个线程方法内使用,同时成对儿出现的是notify()
或notifyAll()。这往往是在多线程实现中必不可少的。


说线程必说多线程,说起多线程,牵扯的问题又会很多,如线程死锁等。
死锁举例,当前资源A,B,当前线程X,Y。X及Y线程同时为开启状态,X线程正在使用资源A,并等待资源A使用完后使用资源B。Y线程正在使用资源B,
并等待资源B使用完后使用资源A。在当前情况下,X不放开A,想用B,Y不放开B,想用A,就出现了线程死锁(DeadLock)。
sychronized:java关键字,上锁。
from百度百科:可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。当两
个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码
块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍然可以访问该object中的非加锁代码块。
经典案例,消费者生产者问题:
生产者在生产产品,消费者在消费产品,当生产者生产速度过快,产品过剩,无存储空间供其实用,生产者需等待。当消费者消费速度过快,产品被
消费干净,无产品再供使用,消费者需等待。


(本篇笔记终结,所有概念描述未粘贴相应案例代码,目的在于日后复习过程中对照案例自行敲码回忆。)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值