首页 > 代码库 > 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多线程