<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培训、期待与您交流! ----------------------