Java多线程专题-Java多线程简介及创建方式

Java多线程简介

线程是程序中一个单一的顺序控制流程。进程内有一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指令运行时的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。

多线程指在程序内部同时执行多条任务线,各自同时进行处理不同的任务,从而最大限度利用计算机性能,提高程序效率。

进程与线程比较

每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。

使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等。

如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换,更多的线程需要更多的内存空间,线程的中止需要考虑其对程序运行的影响。通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生。

总结:进程是所有线程的集合,每一个线程是进程中的一条执行路径。

多线程创建方式

多线程的创建方式有多种,本文介绍常用的两种方式:继承Thread类、实现Runable接口,其他还有使用内部类等方式。

继承Thread类方式

/**
 * 功能描述:通过继承Thread的方式创建多线程
 * 
 */
class CreateThread extends Thread {
    // run方法中编写 多线程需要执行的代码
    public void run() {
        for (int i = 0; i< 5; i++) {
            System.out.println("i:" + i);
        }
    }
}
public class ThreadDemo {

    public static void main(String[] args) {
        System.out.println("-----多线程创建开始-----");
        // 1.创建一个线程
        CreateThread createThread = new CreateThread();
        // 2.开始执行线程 注意 开启线程不是调用run方法,而是start方法
        System.out.println("-----多线程创建启动-----");
        createThread.start();
        System.out.println("-----多线程创建结束-----");
        }
}

以上代码运行结果:

-----多线程创建开始-----
-----多线程创建启动-----
-----多线程创建结束-----
i:0
i:1
i:2
i:3
i:4

实现runable接口方式

/**
 * 功能描述:通过实现Runnable接口的方式创建多线程
 * 
 */
class CreateRunnable implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i< 10; i++) {
            System.out.println("i:" + i);
        }
    }
}

public class ThreadDemo2 {
    public static void main(String[] args) {
        System.out.println("-----多线程创建开始-----");
        // 1.创建一个线程
        CreateRunnable createThread = new CreateRunnable();
        // 2.开始执行线程 注意 开启线程不是调用run方法,而是start方法
        System.out.println("-----多线程创建启动-----");
        Thread thread = new Thread(createThread);
        thread.start();
        System.out.println("-----多线程创建结束-----");
    }
}

获取线程对象以及名称

常用线程api方法

start()

启动线程

currentThread()

获取当前线程对象

getID()

获取当前线程ID      Thread-编号  该编号从0开始

getName()

获取当前线程名称

sleep(long mill)

休眠线程

Stop()

停止线程,

常用线程构造函数

Thread()

分配一个新的 Thread 对象

Thread(String name)

分配一个新的 Thread对象,具有指定的 name正如其名。

Thread(Runable r)

分配一个新的 Thread对象

Thread(Runable r, String name)

分配一个新的 Thread对象

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值