黑马程序员——Java基础--- 多线程

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1.多线程:java语言提供并发机制,程序员可以在程序中执行多个线程,每个线程完成一个功能,并且与其他的线程并发执行,这种机制称为多线程。
Thread类(java.lang.Thread),语法public Thread(String threadName/可省略);完成真正功能的代码放在类的run()方法中,然后同时调用Thread类中的start()方法执行线程,也就调用了run()。
Runnable接口(java.lang.Runnable),语法public class Thread extends Object implements Runnable。实现Runnable接口的程序会创建一个Thread对象,并将Runnable对象与Thread对象相关联,Thread有两个构造方法public Thread(Runnable r,String name/可省略),使用Runnable接口启动新的线程的步骤(1,建立Runnable对象2,使用Runnable对象的构造创建Thread实例3,调用start()方法启动线程)。
2.线程的生命周期(七个)
出生状态:在用户使用线程实例调用start()方法之前
就绪状态:当用户调用start方法之后
运行状态:当线程得到系统资源后
等待状态:运行状态下的状态调用Thread类中的wait()方法,其只能被notify/notifyAll()方法唤醒
休眠状态:当线程调用sleep()方法,其中的参数是以毫秒为单位的。
阻塞状态:一个线程在运行状态下发出输入输出请求
死亡状态:当线程的run()方法执行完毕时
3.线程的加入,使用join方法讲一个线程加入到另一个线程,另一个线程会等待该线程执行完后再继续执行。
线程的中断,现在不使用stop()方法停止线程,提倡在run()方法中使用无限循环的形式,然后使用一个布尔型标记控制循环的停止。
线程的礼让,yield()方法表示,它只是给出现在运行状态下的线程一个提醒,告诉它可以将资源礼让给其他线程,只是一种暗示
4.线程优先级
Thread类包含的成员变量代表线程的某些优先级,都在Thread.MIN_PRIORITY---Thread.MAX_PRIORITY间,默认条件下是Thread.NORM_PRIORITY。优先级可以使用setPriority(t)方法调整(t在1-10之间)
5.线程安全问题,必须考虑到两个线程同时存取单一对象的数据
线程同步机制,这时需要采取在给定时间内只允许一个线程访问共享资源,即是在给共享资源上加一道锁
java中的同步机制可以有效的防止资源冲突,使用关键字synchronized.语法:synchronized(object){...}这个同步块也成为临界区,通常将共享资源放在synchronized定义的区域中
同步方法,语法:synchronized void f(){}.当某个对象调用了同步方法,该对象上的其他同步方法必须等待该同步方法执行完毕。
6。线程间的通信(使用wait(),notify(),以及notifyAll()方法实现)
sleep和wait的区别在于sleep()方法的线程不释放锁。wait的两种使用方法
wait(time)这个同sleep()含义一样,在指定的时间内暂停
wait()会使线程永远的等待下去,直到notify(),以及notifyAll()方法唤醒

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值