多线程编程

来源:互联网 发布:网络延长器的作用 编辑:程序博客网 时间:2024/04/29 20:59

1.多任务处理有两种类型:基于进程(-独享内存地址空间);基于线程(-在进程内部共享内存地址空间)——————{1.继承Thread重写;run()方法;new出子类对象;调用start();2.实现Runnable;new出Thread对像;调用start()}。

2.进程是指一种“自包容”的运行程序,有自己的地址空间;线程是进程内部单一的一个顺序控制流

3.基于进程的特点是允许计算机同时运行两个或多个的程序

4.基于线程的多任务处理环境中,线程是最小的处理单位

线程概述

可以将在一个Java虚拟机中运行的多线程程序堪称是一个操作系统中运行的多个进程

创建和启动线程

1通过以下两种方法创建Thread对象:

      -声明一个Thread类的子类,并覆盖run()方法。       class mythread extends Thread{       public void run(){/覆盖方法\}      -声明一个实现Runnable接口的类,并实现run()方法       class mathread implements Runnable{       public void run(){\实现该方法}}

线程状态

     1.  新建状态;{通过new出thread对象}     2.  就绪状态;{执行start方法之后,执行run方法之前}     3.  运行状态;{执行run方法}     4.  中断状态;{中断原因:                  1.由于优先级关系,线程没有抢到CPU,优先级最小为1级,最大为10级,默认为5级,this.setPriority(Thread.MIN-PRIOR);                 2.使用sleep()使线程休眠,sleep方法到点是让线程重新参与竞争,不是到点就能直接进去;                 3.阻塞(i/o事件)                 4.wait——notify机制;使线程等待                 5.挂起yield(),线程已显示出让CPU控制权 }     5.  死亡状态;{run方法执行结束(清理内存,回收空间)}

线程同步

  1. 有时两个或多个线程可能会试图同时访问一个资源
  2. 在此情况下,数据可能会变得不一致
  3. 为了确保在任何时间点一个共享的资源只被一个线程使用,使用了“同步”
  4. 使用同步关键字synchronized来进行标记

线程安全性问题:

        描述:多个线程访问同一资源对象,可能会造成资源对象数据混乱        解决:同步(锁)synchronized;             死锁:描述.当两个线程访问一对相互依赖的同步资源时,会出现死锁。                  解决:wait——notify{代码:生产者、消费者}        效果:线程安全了,但效率低
  1. 在资源调用处加同步————同步块{synchronized(rs){rs.display2(threadName) }
0 0
原创粉丝点击