多线程

<a">---------------------- android培训java培训、期待与您交流! ---------------------- ---------------------- android培训java培训、期待与您交流! ---------------------- ---------------------- android培训java培训、期待与您交流! ---------------------- android培训、<a">---------------------- android培训java培训、期待与您交流! ---------------------- ---------------------- android培训java培训、期待与您交流! ---------------------- java培训、期待与您交流!">---------------------- android培训java培训、期待与您交流! ---------------------- ---------------------- android培训java培训、期待与您交流! ----------------------

一:多线程的概念:
 程序运行就是一个进程在运行,在进程中根据需求会产生若干个线程来控制程序的运行,但是进程中至少有一个线程来控制进程的运行.

二:多线程的创建:
 1:继承Thread类;
 ①:需要继承Thread类.自定义一个类(MyThread),继承(extends)Thread类,在自定义类中重写run()方法,将新线程中要执行的代码写在run()方法中;
 ②:创建MyThread类的对象,调用start()方法就可以开启一条新线程;
 2:实现Runnable接口;
 ①:需要自定义一个类(MyRunnable)实现Runnable接口,重写run()方法,将新线程中药执行的代码写在run()方法中;
 ②:创建MyRunnable对象,创建Thread对象,将MyRunnable创建的对象传入Thread的构造函数中.
 ③:调用Thread对象的start()方法就可以开启一条新线程,新线程中执行的是Runnable的run()方法;


三:使用多线程常用的方法:
 光创建线程是不能完成对程序的编写需求的,需要对程序进行调试,需要进行优化,这个时候就得想到多线程中常用的方法,该怎么运用,如何才能让程序达到理想的运行结果.
 ①:currentThread
  返回对当前正在执行的线程对象的引用;
 ②:getName,setName
  获取和设置线程的名字;
 ③:sleep
  控制当前线程休眠,指定毫秒;
 ④:setDaemon
  将指定线程设置为守护线程,守护线程不会单独执行.必须在start()方法之前调用;
 ⑤:join
  当前线程暂停,等待指定线程执行结束后再继续执行;


四:多线程的同步;
 1:为什么要同步?因为多线程并发访问同一数据时,有可能会出现线程安全的问题,这个时候可以使用同步技术解决.意思就是当多个线程同步的时候,在同一时间只能有一个线程在运行.
 2:可是如何能够让线程同步呢?有两种方法.
  ①:同步代码块:
   这里需要使用到"synchronized(锁对象){同步代码}"的形式控制多段代码同一时间内只能运行一个;在这里只要指定的锁对象是同一个对象,那么多个线程在同一时间内只能有一个操作此对象;
  ②:同步方法:
   如果整个方法内的代码都是需要同步话,那么可以在方法签名中添加synchronized来修饰当前方法;
   同步方法默认使用this作为锁对象的,不能自己指定锁对象;
 3:死锁,就是在多个线程并发使用同步技术的时候,如果互相潜逃使用多段同步代码,就有可能产生死锁.在编程的时候一定要注意避免死锁的出现;


四,线程间的通信:
 1,为什么要通信?在多线程并发执行的时候,如果需要指定线程等待或者唤醒指定线程,这个时候就需要使用到通信;
 2,如何通信呢?
  ①:这个时候就需要在同步代码块中,使用锁对象的wait()方法让当前线程等待,知道其他线程唤醒为止;
  ②:在同步代码快中,使用锁对象的notify()方法可以唤醒一个正在等待的线程;


五:JDK5中的同步和通信:
 1,同步
  使用ReentrantLock类的lock()方法开始同步,使用unlock()方法结束同步;
 2,通信
  使用ReentrantLock类的newCondition()方法来获取Condition类对象.
  可以调用Condition的awit()方法等待,调用Condition的signal()方法唤醒.

 

六:计时器
 什么是计时器呢?是可以用来安排一个任务,这个任务可以延迟指定毫秒之后执行,或者这个任务可以安排在指定的时间执行;
 怎么使用计时器?
  创建Timer对象,调用其schedule方法安排任务;

 ---------------------- android培训java培训、期待与您交流! ----------------------  ---------------------- android培训java培训、期待与您交流! ----------------------  ---------------------- android培训java培训、期待与您交流! ---------------------- android培训、<a"> ---------------------- android培训java培训、期待与您交流! ----------------------  ---------------------- android培训java培训、期待与您交流! ---------------------- java培训、期待与您交流!"> ---------------------- android培训java培训、期待与您交流! ----------------------  ---------------------- android培训java培训、期待与您交流! ----------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值