- <a href="http://www.itheima.com"target="blank">JAVA+android开发</a>、<a href="http://www.itheima.com"target="blank">JAVA培训</a>、期待与您交流! ----------------------
线程实列:
package debug;
import java.io.*;
import java.lang.Thread;
class MyThread extends Thread{
public int x = 0;
public void run(){
System.out.println(++x);
}
}
class R implements Runnable{
private int x = 0;
public void run(){
System.out.println(++x);
}
}
public class Test {
public static void main(String[] args) throws Exception{
for(int i=0;i<10;i++){
Thread t = new MyThread();
t.start();
}
Thread.sleep(10000);//让上面的线程运行完成
R r = new R();
for(int i=0;i<10;i++){
Thread t = new Thread(r);
t.start();
}
}
}
上面10个线程对象产生的10个线程运行时打印了10次1。下面10个线程对象产生的10个线程运行时打印了1到10。我们把下面的10个线程称为同一实例(Runnable实例)的多个线程。
1) start() 和 run()
调用线程对象的run方法不会产生一个新的线程
2) interrupt() 和 interrupted() 和 isInterrupted()
interrupt() 设置线程的中断状态,而非实质的中断线程。
interrupted() 用来判断当前线是否被中断,而
isInterrupted() 可以用来判断其他线程是否被中断,方法则仅仅检查线程对象对应的线程是否是中断状态,并不改变它的状态。
3) sleep() 和 join() 和 yield()
sleep()是类方法,也就是对当前线程而言的,程序员不能指定某个线程去sleep,只能是当前线程执行到sleep()方法时,睡眠指定的时间(让其它线程运行). 注释:在同步方法中尽量不要调用线程的sleep()方法
join()等待调用线程的返回结果。是测试其它工作状态的唯一正确方法。
yield()是类方法,只在当前线程上调用,理由同上,它主是让当前线程放弃本次分配到的时间
4) wait() 和 notify()/notifyAll()
wait() 将调用该方法的线程在休息室中等待。
notify()/notifyAll() 这两个方法都是把某个对象上休息区内的线程唤醒,notify只能唤醒一个,但究竟是哪一个不能确定,而notifyAll则唤醒这个对象上的休息室中所有的线程.
5) isAlive()
当线程处于运行状态时,isAlive返回true,当isAlive返回false时,可能线程处于等待状态,也可能处于停止状态。
synchornized关键字
在JAVA中,用synchornized关键字来实现互斥控制
把一个单元声明为synchornized,就可以让在同一时间只有一个线程操作该方法.
- <a href="http://www.itheima.com"target="blank">JAVA+android开发</a>、<a href="http://www.itheima.com"target="blank">JAVA培训</a>、期待与您交流! ----------------------