黑马程序员-java-多线程

------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);
}
}
}




你可能感兴趣的:(黑马程序员-java-多线程)