多线程总结
Java多线程总结
目标: 理解程序、线程和进程的概念 理解多线程的概念 掌握线程的各种状态 熟练使用Thread类、Runnable接口创建线程 熟练使用线程各种方法 1、
程序、线程、进程
和独立运行的单位,使用了CPU2、线程的五种状态
新建:当一个间没有占用CPU开始执行线程run()方法,子类必须重写run方法;
的使用权转让其他线程
run方法执行完毕时,线程进入死亡状态;
3创建线程的两种方法:
(1)继承Thread类
(2)实现Runnable接口
继承Thread 类:
public class ThreadDemo extends Thread{
public void run(){
System.out.println(“Hello
Java Thread”);
}
public static void main(String[] args){
多线程总结
new ThreadDemo().start();
}
}
实现Runnable接口
public class ThreadDemo implements Runnable{
public void run(){
System.out.println(“hello java Runnable”);
}
public static void main(String[] args){
new Thread(new ThreadDemo()).start();
}
}
4、线程的
常用方法
设置线程名字:setName();
获取线程名字:getName();
主线程默认的名字可是:main
返回当前正在执行的线程:挂起线程:sleep();该方法要捕捉异常Wait()后面详细讲解;
中断线程:interrupt();
终止线程:stop();public class public super(name);
}
public void Thread = 修改前线程的名字是:"+thread.getName());
线程B");
修改后的线程名字是:"+thread.getName());
睡眠一秒钟");
System.out.println(thread.getName()+"让出锁两秒钟");
wait(1000*2);
}catch(InterruptedException e){
System.out.println(thread.getName()+"被打断了");
}
}
public static void main(String[] args){
String name = Thread.currentThread().getName();
System.out.println(name+"开始执行");
多线程总结
new ThreadMethod("线程A").start(); } } 检查线程:isALive();
isAlive()方法可以判断一个线程是否处于活动状态,当线程处于新建状态时, 使用该方法将会返回FALSE,在线程的run方法结束之前,isAlive方法的返回 值都是TRUE,当线程进入死亡状态时,该方法的返回值是FALSE;
线程联合:join()
如果一个线程需要另一个线程执行完毕,才继续执行,可以使用方法;
守护线程:setDaemon();
程执行完毕时,java线程的调度和优先级:
设置优先级:setPriority(),参数:PRIORITY,Thread.NORM_PRIORITY;
join方法实例:
public class JoinMethod extends Thread{
public void runThread(){
String name = 方法");
for(int i = try{
e){}
第"+i+"次执行循环体");
}
}
public }
void main(String[] args){
jm = new JoinMethod();
联合线程");
try{
jm.join();
}catch(InterruptedException e){}
}
}
setDeamon()方法实例:
public class DaemonDemo extends Thread{
public DaemonDemo(String name,boolean bool){
super(name);
多线程总结
setDaemon(bool); } public void run(){ int i = 0; String name = Thread.currentThread().getName(); System.out.println(name+"开始执行"); while(true){ i++; System.out.println(name+"执行第"+i+"次"); try{ Thread.sleep(100); }catch(InterruptedException e){ System.out.println(name+"被打断了"); }finally{ System.out.println(name+"} } } public static void main(String[] String name = System.out.println(name+"new try{ 被打断了"); } } }
Wait()public implements Runnable{
void readString(String content){
= Thread.currentThread().getName();
开始执行");
当前对象"+this);
try{
System.out.println(name+"等待1秒");
wait(1000*2);
Thread.sleep(1000);
System.out.println(name+"线程休眠了两秒");
}catch(InterruptedException e){}
System.out.println(name+"输出字符串");
for(int i =