多线程编程

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) }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值