多线程(一)

本文介绍了Java中的多线程概念,包括线程与进程的区别,以及如何通过继承Thread类或实现Runnable接口来创建线程。强调了线程间的资源共享和启动线程的正确方式,建议在面临选择时优先考虑实现Runnable接口,以克服Java单继承的限制并提高代码复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

      线程是在进程基础上的一种划分.

      一个进程就表示了一个程序,在一个程序上可以同时运行多个子程序,则这些子程序成为线程.

 

      线程与进程的区别:

            多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响.

            线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈.所以说线程的切换比进程的切换负担要小.

 

      一个类只要继承了Thread类, 就表示此类实现了多线程.

      一个类中有了run()  如果只是 对象.run() 则只是调用了一个方法而已, 没有启动操作系统的支持, 也就更加不存在多线程的使用了.

      要执行多线程的话, 则要调用public void start()

         通过start()调用的是子类中的run()方法,此时的程序是交替运行的,不会像直接调用run()那样顺序执行的.

        

      在JDK中, SUN还为我们提供了一个Runnable接口, 实现这个接口,也可以实现多线程.

      继承Thread类的子类, 里面都有专门用于启动线程的 start().

      在JDK文档中, 可以看到 public Thread (Runnable target){}

 

      在Runnable 和 Thread 都可以实现多线程的情况下, 我们该选谁呢?

            还是接口吧, 这是可以解决单继承局限的.

 

      继承了Thread的多个线程之间无法实现资源的共享,而实现了Runnable接口之后,该类的对象 作为 Thread对象创建的实参, 就可以多个线程之间的资源共享.

 

      用Thread继承而来的线程, 一个线程对象只能启动一次, 无论调用多少次start() ,结果都只有一个线程.

     

        实现Runnable 接口的类 相对于Thread 来讲, 有如下好处:

              适合多个相干同程序代码的线程去处理同一资源的情况; (比如说火车站的售票系统吧!)

              可以避免由于java单继承特性带来的局限;

              有利于程序的健壮性,代码能够被多个程序共享.

 

   

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值