java多线程编程
1、run方法 为线程体 为线程执行代码
2、start方法 运行线程
3、线程的创建:
(1)继承Thread类。
class End implements Runnable{
public End(){
}
public End(String s){
this.name = s;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println(name + " run " + i);
}
}
String name;
}
public class testthread{
public static void main(String[] args){
End end1 = new End("mumu");
End end2 = new End("lulu");
Thread t1 = new Thread(end1);
Thread t2 = new Thread(end2);
t1.start();
t2.start();
}
}
public class hello{
public static void main(String[] args) {
Mythread m = new Mythread();
Thread t1 = new Thread(m);
Thread t2 = new Thread(m);
t1.start();
t2.start();
}
}
class Mythread implements Runnable{
private int count = 10;
public void run(){
while(count > 0)
System.out.println("count= " + --count);
}
}
4、两种构建方法的比较:
Runnable比Thread具有以下优势:
、方便实现资源共享
、避免了单继承机制
、可以被多个线程公用
5、isAlive()方法判断线程是否启动。
join()方法强制执行线程。
sleep(
2000
)方法休眠 参数单位为毫秒。休眠时若被打断,会抛异常。
interrupt()方法中断线程,等待该线程结束后,再执行自己。
setDaemon(true)将线程设置为守护线程。需在线程开始之前设置。守护线程即为后台线程,当主线程停止运行时用户线程将会继续运行,如果全都是后台进程的话,那么jvm结束。(只有在当前jvm中所有的线程都为守护线程时,jvm才会退出。)守护线程具有最低的优先级。
setPriority(
8
);设置优先级,主线程的优先级为5.执行哪个线程还是取决于cpu资源而不是优先级。
getPriority() 得到优先级。
Thread.currentThread().yield(); currentThread为当前正在执行的线程,yield()为线程的礼让,
是让当前线程暂停,转入就绪状态,让系统的线程调度器重新调度一次
6、将方法设置为临界资源,在同一时刻只允许有一个线程使用这个方法。
eg:public
synchronized
void
sale()