首页 > 代码库 > Java多线程
Java多线程
进程的概念
进程就是正在执行的程序,一个进程通常就是一个正在执行的应用程序。从Windows角度讲,进程是含有内存和资源并安置线程的地方。
线程的概念
线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。
进程和线程的联系与区别
一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个主线程。
系统资源分配给进程,同一进程的所有线程共享该进程的所有资源。
线程是指进程内的一个执行单元,也是进程内的可调度实体。
多线程的概念
多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。
多线程的好处
Java支持编写多线程的程序;
多线程最大好处在于可以同时并发执行多个任务;
多线程可以最大限度地减低CPU的闲置时间,从而提高CPU的利用率。
继承Thread类的方式
public class ThreadDemo extends Thread {
@Override
public void run() {
//该线程执行的独立任务
System.out.println("当前线程名为:" + Thread.currentThread().getName()
+ ",线程ID为:" + Thread.currentThread().getId()
+ ",优先级为:" + Thread.currentThread().getPriority());
}
public static void main(String[] args) {
//线程1
ThreadDemo thread1 = new ThreadDemo();
thread1.setName("线程1");
//设置优先级
// thread1.setPriority(MIN_PRIORITY);
//启动自定义线程
//使用run不创建新线程
// thread1.run();
//使用start创建新线程,实现多线程
thread1.start();
//线程2
// ThreadDemo thread2 = new ThreadDemo();
// thread2.setName("线程2");
// //优先级高的先执行
// thread2.setPriority(MAX_PRIORITY);
// thread2.run();
// thread2.start();
}
}
实现Runnable接口的方式
public class RunnableDemo implements Runnable {
@Override
public void run() {
//该线程执行的独立任务
System.out.println("当前线程名为:" + Thread.currentThread().getName()
+ ",线程ID为:" + Thread.currentThread().getId()
+ ",优先级为:" + Thread.currentThread().getPriority());
}
public static void main(String[] args) {
//实例化r1对象,这时候r1并非是线程,是一个Runnable对象
RunnableDemo r1 = new RunnableDemo();
//创建一个线程作为外壳,将r1包起来,
Thread thread1 = new Thread(r1);
//启动线程
thread1.start();
}
}
计算机只有一个CPU,各个线程轮流获得CPU的使用权,才能执行任务;
优先级较高的线程有更多获得CPU的机会,反之亦然;
优先级用整数表示,取值范围是1~10,一般情况下,线程的默认优先级都是5,但是也可以通过setPriority和getPriority方法来设置或返回优先级;
Java多线程