第十三章 多线程
1:线程的状态:
(1)创建状态:new 创建,仅作为实例存在,未分配CPU空间。
(2)就绪状态:Start()方法,线程对象以产生,未启动。
(3)等待状态:wait()方法,等待状态,调用notify或notifyAll回到执行状态。
(4)睡眠状态:sleep()方法,线程转为睡眠状态。
(5)运行, 线程作为当前执行进程时。
(6)死亡状态:当run方法返回,调用stop()方法时,线程进入死亡状态。
2:java中创建新的执行线程有两种方法:
(1):一种方法是将类声明为Thread的子类,该子类重写Thread类的run方法。
(2):继承java.lang.Thread类
定义一个类,重写run方法。
例子:
class MyThread extedns Thread {
public void run(){
System.out.println("MyThread run");
}
}
3:启动线程:
MyThread mr = new MyThread();
mr.start();//启动线程
MyRunnable mr = new MyRunnable();
Thread t1= new Thrad(mr);//创建
Thread t2 = new Thread(mr);
t1.setName("Thread-----1");
t2.setName("Thread-----2");//线程名
t1.start();//启动
t2.start();
class MyRunnable implement Runnable{
public void run (){
System.out.println(Thread.currentThread().getName()+"MyRunnable run()");//获取正在执行的线程的名称
}
}
4:线程的阻塞:
(1):线程的睡眠
Thread.sleep(1000);//表示1秒钟 ,1000毫秒表示1秒,
(2)设置优先级
setPriority()方法设置优先级。
getPriority()获取当前线程的优先级。
优先级低:MIN_PRIORITY
优先级中:NORM_PRIORITY
优先级高:MAX_PRIORITY
5:线程的让步:
(1):yield()方法
让当前运行的线程回到就绪状态。
(2):join()方法
让一个线程加入到另一个线程的结尾,等待另一个线程执行完成之后再执行。
6:线程的同步:
(1):wait()方法:
让当前线程等待,直到其他线程调用对象的notify()方法,或notifyAll方法。
(2):notify()方法,唤醒一个正在等待的线程,并允许去获得对象锁。
notifyAll方法,唤醒多个正在等待的线程,并允许去获得对象锁。
(3):死锁:synvhronized
多个线程被同时阻塞。