java基础-多线程的三种实现方式和成员方法
·
进程:程序的基本执行实体
线程:线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中实际运作的单位。简单理解:应用软件中互相独立,可以同时运行的功能

线程并发和并行的概念:
并发:在同一时刻,有多个指令在单个cpu上交替执行
并行:在同一时刻,有多个指令在多个cpu上同时执行
多线程的实现方式:

多线程第一种实现方式:继承Thread类的方式进行实现

多线程第二种实现方式:实现Runnable接口的方式实现
这里需要注意的是:这种方式呢,需要利用Thread的静态方法currentThread,这个方法是可以查看执行到当前这段代码是哪个进程。

因为前面两种方式都是重写run方法,都是没有返回值
多线程第三种实现方式:利用Callable接口和Future接口方式实现call方法,这个方法可以通过Callable的泛型来返回具体的返回值


Thread中的成员方法:



package Day14_thread;
public class ThreadTest04 {
public static void main(String[] args) {
//getName
//如果我们没有设置进程的名称,那么这个进程的名称格式如下
//Thread-序号,这个序号是从0开始的
MyThread04 mt1 = new MyThread04();
MyThread04 mt2 = new MyThread04();
//设置进程名称方法:setName/Thread构造方法
//setName:设置进程名称,其实也可以用Thread的构造方法来
//设置名称
mt1.setName("进程1");
MyThread04 mt3 = new MyThread04("进程3");
mt1.start();
mt2.start();
mt3.start();
//currentThread:
//当JVM虚拟机启动之后,会自动启动多条线程,其中有一条就是
//main线程,这个线程的作用就是调用main方法,执行里面的代码
//线程休眠:sleep
//细节1;哪个线程执行到这个方法,哪个线程就会在这里停留
//对应的时间
//细节2:方法的参数,表示休眠的时间,单位毫秒
//3、当时间到了之后,线程会自动醒来,继续执行下面的代码
}
}
设置线程的优先级:setPriority
获取线程的优先级:getPriority
java线程的调度是抢占式调度,随机性。优先级越高,抢占到资源的概率就越高

如果没有给线程设置优先级,线程的优先级默认值是5,

如果给线程设置优先级是1和10,从结果看,线程2就会更快抢占资源

设置守护线程:setDaemon,参数是boolean类型的

注意看下面,线程2只打印了3,4后面的就不打印了,是因为,虚拟机检测到线程1已经结束了,所以就会陆续终止线程2了。需要注意的是,守护线程并不是代表一定就是非守护线程执行完之后,守护线程才开始执行

出让/礼让线程:了解
礼让线程/出让线程:yield()

插入线程:join
该线程调用join方法,就可以插入先执行

更多推荐




所有评论(0)