JavaSE:多线程

有些话、适合烂在心里 提交于 2020-03-22 00:03:01

  线程的概述  

线程是一个在进程基础上发展起来的概念,引入它是为了提高系统的并发执行程度,进一步减少时间和空间的开销。

一、线程不能独立存在,必须存在于某个进程中。

二、同一进程内的线程都可以访问进程的所有资源,因此线程之间的通信比进程之间的通信要方便得多。

三、同一进程内的线程切换也比进程方便。

四、线程必须被系统调度而获得CPU使用权后才能运行,所以线程的执行顺序不是由程序本身控制的,而是由系统调度决定的。

  线程的创建方式  

一、继承Thread类并重写run()方法。

class Pig extends Thread {

    public Pig(String threadName) {
        super(threadName);
    }

    public void run() {
        System.out.println("执行线程代码");
    }

    public static void main(String[] args) {
        
        Pig pig1 = new Pig("线程1");
        Pig pig2 = new Pig("线程2");
        pig1.start();
        pig2.start();
        
        System.out.println("当前线程的线程组中活动线程的数目:"+pig1.activeCount());

    }

}

二、实现Runnable接口并实现run()方法。

class Pig implements Runnable {

    public void run() {
        System.out.println("执行线程代码");
    }

    public static void main(String[] args) {
        
        Pig pig1 = new Pig();
        Pig pig2 = new Pig();
        Thread t1 = new Thread(pig1);
        Thread t2 = new Thread(pig2);
        t1.start();
        t2.start();
        
        System.out.println("当前线程的线程组中活动线程的数目:"+t2.activeCount());

    }

}

注:

1、若线程类已经继承了某个类,由于单继承的原因,此时应该使用Runnable接口的创建方式。

2、Runnable接口本身并没有对线程提供支持,还必须创建Thread类的对象,并把目标对象传递给Thread类来完成对线程执行的控制。

3、与Thread类相比,Runnable接口更适合于多个线程处理同一资源。

4、使用Runnable接口更符合面向对象的设计思想,而且几乎所有的多线程应用都可以通过实现Runnable接口的方式来完成。

  线程的生命周期  

待续

  线程的调度和优先级  

待续

  线程的控制  

一、线程的启动

线程的启动必须调用run()方法。当线程被分配到CPU资源后,才真正执行run()方法,这也是线程启动是调用start()方法,而不是直接调用run()方法的原因。

二、线程的休眠

1、sleep()方法。

2、示例:待续。

三、线程的联合

1、join()方法。

2、示例:待续。

四、线程的让步

1、yield()方法。

2、示例:待续。

五、当前线程状态的检查

待续

六、结束线程

待续

  线程的同步问题  

待续

  线程的死锁问题  

待续

  线程间的通信  

待续

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!