java面向对象下:多线程编程

       在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java;

  多线程编程:

  多任务分为多进程和多线程:

  1、多进程:每一个程序(进程)在内存中各自一块独立的内存地址空间;

  2、多线程:线程是包含在内存中的,每个进程可以分为多个线程,在内存中线程是共享内存地址空间的。

  它们的区别:1、线程是进程内部的一个程序控制流;2、进程独享内存地址空间,线程共享

  内存地址空间;3、线程的调用开销比进程小,相应的切换成本比进程低。

  gc线程:垃圾回收器(守护线程)。

  线程状态(生命周期):

  1、新建;new出Thread对象

  2、就绪;调用start方法

  3、运行;运行run方法

  中断:没有得到CPU的执行

  (1)、没有抢占到CPU;线程优先级:1到10级,默认5级,10级最高setPriorty()可以设定线程的优先级,getPriorty()可以获得线程优先级

  (2)、等待输入输出;阻塞,I/O事件

  (3)、睡眠休眠;sleep()到点后醒来加入抢占CPU的执行,不是醒来后立即执行。

  (4)、等待;wait()

  (5)、挂起;yield()

  4、死亡。run方法结束

  线程的创建:

  1、thread类:

  (1)、编写一个继承Thread类的子类;

  (2)、重写从父类继承的run方法;

  (3)、创建Thread子类类的实例;

  (4)、调用这个子类的start方法。(如果调用run方法则是普通调用,不会新建线程。)

  2、Runnable接口:(这种更加符合面向对象)

  (1)、创建一个类来实现Runnable接口;

  (2)、在Runnable指定的run方法内放入想要在线程中执行的代码;

  (3)、创建一个Runnable类的实例;

  (4)、创建一个Thread对象,将Runnable类的实例作为构造参数传进去;

  (5)、调用Thread类的start方法开始执行线程。

  线程同步Synchronized关键字修饰符:

  同步块:定义在调用者上,更灵活。

  Synchronized(取得锁的对象){

  要锁定的代码

  }

  同步方法:定义在资源上,更安全。

  在方法名前加Synchronized关键字修饰符。

  同步之后也许会产生死锁,产生死锁后的解决方案是:线程通讯。

  线程之间的相互通讯:

  wait()、notify()、notifyAll()用于线程间的通讯,只能写在同步方法或同步块中。

  wait():让使用对象的线程停止运行;

  notify():唤醒第一个等待的对象;

  notifyAll():唤醒所有等待对象,让它们开始竞争CPU。

  疯狂Java培训fkjava的课程采用针对性培养,全面提升学员就业能力,重点加强训练职业素质。老师辛勤的讲解,让学员充分感受Java的魅力,充分激发每个学员对于编程的热爱,让学员在半年的时间内掌握8-10万的代码量,成为真正的技术高手,疯狂Java采用企业全真模拟开发训练,迅速积累项目经验。让学员迅速获得其他人需要花费两年才能获得的工作技能,无忧就业!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值