标签:
在java中要想实现多线程,有两种手段,一种是继承Thread类,另外一种是实现Runable接口。
继承Thread类重写run方法
例
public class ThreadDemo1 { public static void main(String[] args){ Demo d = new Demo(); d.start(); for(int i=0;i<60;i++){ System.out.println(Thread.currentThread().getName()+i); } } } class Demo extends Thread{ public void run(){ for(int i=0;i<60;i++){ System.out.println(Thread.currentThread().getName()+i); } } }
实现Runnable接口重写run方法
例
public class ThreadDemo1 {
public static void main(String[] args){
Demo d = new Demo();
new Thread(d).start();
for(int i=0;i<60;i++){
System.out.println(Thread.currentThread().getName()+i);
}
}
}
class Demo implements Runnable{
public void run(){
for(int i=0;i<60;i++){
System.out.println(Thread.currentThread().getName()+i);
}
}
}
多线程的常用方法
object.wait():
在其他线程调用此对象的notify()或者notifyAll()方法前,线程一直处于休眠状态
Thread.sleep():
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。监控状态依然保持、会自动恢复到可运行状态,不会释放对象锁
thread.join():
在一个线程对象上调用,使当前线程等待这个线程对象对应的线程结束。
Thread.yield():暂停当前正在执行的线程对象,并执行其他线程。
thread.interrupt()
中断线程,停止其正在进行的一切。中断一个不处于活动状态的线程不会有任何作用。
如果线程在调用Object类的wait()方法、或者join()、sleep()方法过程中受阻,则其中断状态将被清除,并收到一个InterruptedException。
Thread.interrupted():检测当前线程是否已经中断,并且清除线程的中断状态(回到非中断状态)。
thread.isAlive():如果线程已经启动且尚未终止,则为活动状态。
同步与死锁
在多线程中如何找到安全问题所在:
1,明确哪些代码是多线程运行代码
2,明确共享数据
3,明确多线程运行代码中哪些代码是操作共享数据的
标签:
原文地址:http://www.cnblogs.com/54ljj/p/5405921.html