学习笔记7—Java基础5_多线程

来源:互联网 发布:帝国cms在线视频网站 编辑:程序博客网 时间:2024/05/01 17:18

进程与线程:
      多任务系统中,每个独立执行的程序称为进程。现在的操作系统一般都是多任务的,一个设备一时刻只能做一件事,但以非常小的时间间隔交替执行多个程序,就可以给人以同时执行多个程序的感觉。
      一个进程中可以包含一个或多个线程,一个线程就是一个程序内部的一条执行线索,如果一个程序中实现多段代码同时交替运行,就需产生多个线程。
      开始main()方法就是一个线程。

用thread类创建线程:
      要实现多线程,必须编写一个继承了thread类的子类,子类要覆盖run方法,在该方法中调用想在新线程上运行的代码块。
      调用thread类对象的start方法来产生一个新线程,并运行我们在子类中重写的run方法(面向对象的多态性)。
      run方法执行完后该线程就相应的结束了,因而可以控制run方法中的循环条件来控制线程结束。
 
后台线程与联合线程:
      java程序中,只要有一个前台线程在运行,这个进程就不会结束、但如果一个进程中只有后台线程在运行,这个进程就会结束。
      在调用start方法之前调用setDaemon(true)方法,这个线程就成为了后台线程。
      pp.jion()的作用是把pp所对应的线程合并到当前线程中。

使用Runnable接口来创建多线程:
      使用Runnable接口来创建多线程而不是继承Thread类方式是因为,
          前者可以避免由于java单继承特性所带来的局限性,我们不能将一个子类实现多线程。
          而且前者适合多个相同程序代码的线程处理同一资源的情况,较好的体现了面向对象的设计思想。

多线程在实际中的应用:
      网络聊天程序的收发:收和发的功能分别在两个线程中实现。
      表记录复制的中途取消:用一个变量的值作为线程循环条件,使用改变变量的方法来控制线程结束。
      www服务器:为每位来访者都建立专线。

多线程的同步:
      线程安全是指在该线程在没有处理完这段代码时系统跳转到下一个线程中,而下一个线程使用到了前一个线程所处理的数据,这样就造成了错误。
      我们可以使用同步代码块和同步函数来解决线程安全。声明同步关键字 synchronized
      代码块和函数同步的问题,我们可以让两者使用同一个线程对象来实现。

死锁问题:
      线程间相互占用着对方所需要的资源等待时会出现死锁问题。

线程间的通信:
      wait:告诉当前线程放弃监视器并进入睡眠状态知道其他线程进入同一监视器并调用notify为止。
      notify:唤醒同一对象监视器中调用wait的第一个线程。
      notifyAll:唤醒同一对象监视器中调用wait的所有线程,具有最高优先级的首先被唤醒并执行。

线程的生命控制:
      查阅文档thread类中的各种方法对线程的控制。

   

原创粉丝点击