------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一多线程的基础知识
1.什么是线程
是进程中的单个顺序控制流,是一条执行路径
2多线程的好处
不是提高程序的执行速度,而是为了提高应用程序的的使用率,线程执行有随机性
3创建多线程的两种方式
<1>将类声明为Thread的子类,重写run方法,创建对象,启动线程
<2>实现Runnable接口,重写run方法,创建接口实现类对象,将对象作为构造参数传入Thead对象,启动线程。
4设置线程的名称
setName();
5设置线程的优先级
setPriority()
二线程控制
1线程睡眠
public static void sleep(long millis)
2线程加入
public final void join()
3线程礼让
public static void yield() 暂停当前正在执行的线程对象,并执行其他线程(不能保证轮流)
4后台线程
public final void setDaemon(boolean on) 将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,java虚拟机退出。该方法必须在启动线程前调用。
5线程中断
public void interrupt() 把线程状态终止,并抛出一个异常
三基础练习
1设置线程名称
public class Test01 {
public static void main(String[] args) {
Mythread my1=new Mythread();
Mythread my2=new Mythread();
System.out.println(Thread.currentThread().getName());//获取当前进程的名称
my1.setName("hello");
my2.setName("收集");
Mythread my3=new Mythread("haha");
my3.start();
my1.start();
my2.start();
}
}
2线程加入
public class Test04 {
public static void main(String[] args) {
ThreadJoin tj1=new ThreadJoin();
ThreadJoin tj2=new ThreadJoin();
ThreadJoin tj3=new ThreadJoin();
tj1.setName("lllll");
tj2.setName("----");
tj3.setName("aaaa");
tj1.start();
try {
tj1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tj2.start();
tj3.start();
}
}
3后台线程
public class Test06 {
public static void main(String[] args) {
ThreadDaemon td1=new ThreadDaemon();
ThreadDaemon td2=new ThreadDaemon();
td1.setName("haha");
td2.setName("阿黑");
//设置守护线程
td1.setDaemon(true);
td2.setDaemon(true);
td1.start();
td2.start();
Thread.currentThread().setName("刘备");
for(int i=0;i<5;i++){
System.out.println(Thread.currentThread().getName()+i);
}
}
}