线程总结


 1、程序:利用编程语言开发的一个工具软件,静态的,在没有启动运行之前只是磁盘中的一个普通文件。

 2、进程:当一个程序进入内存就变成了进程,即进程是处于运行过程中的程序,具有一定的独立功能。

       特征:独立性,动态性,并发性。

3、线程:被称为轻量级的进程,指运行过程中的调度单位,线程在程序中是独立的,并发执行的流。线程可以创建和撤销,具有就绪、阻塞和运行三种基本状态。

     1、单线程:只有一条的执行走向线程,效率比较低,没有充分利用CPU。

     2、多线程:多于一条的执行走向线程,共享内存,可以实现多任务。

          例:访问网页时,应用服务器可以同时响应多个用户请求。

               一段代码就好像是一座独木桥,任何时刻,只能有一个人在桥上走。

               一张火车票只能卖给一位乘客。

4、进程与线程的区别与联系:

       1、进程和线程都是一个控制流程,但是一个进程通常对应一个程序,而一个程序可以由多个不同的线程构成。 

       2、线程是进程中的实体,一个程序运行,至少有一个进程,一个进程里可以包含多个线程,但至少要包含一个线程。 5、为什么使用多线程?

      1、进程之间不能享用内存,但线程之间可以共享内存。

      2、系统创建进程需要重新分配系统资源,用多线程实现多个任务并发比进程效率高。

      3、java中内置了多线程功能的支持,简化了java的多线程编程。

6、java线程的模型

     1、抢占式调度模型:许多线程处于等待状态,但实际上只有一个线程在运行。该线程一直运行到它终止进入可运行状态,或另一个具有更高优先级的线程变成可运行状态。

     2、java线程调度器支持不同优先级线程的抢先方式,但本身不支持相同优先级线程的时间片轮换,但是如果系统支持,java可以做到。

7、java线程优先级:java 提供了10个优先级,默认为0-9,但这些优先级需要操作系统的支持。不同操作系统上优先级并不相同,也不能很好地和java的10个优先级对应。优先级高的线程会获得较多的执行机会,但是优先级低的线程也可以先执行。

8、主线程:其他线程的运行必须要通过主线程来触发,由主线程开始,由主线程结束,可控制其他线程。

9、建立线程:

     1、继承Thread类:定义Thread类的子类,并重写该类的run方法,该run方法的方法体就是代表了线程需要完成的任务;创建Thread类子类的实例;用线程对象的start方法来启动该线程。

     优缺点:编写简单;但继承了Thread类,不能在继承其他类。

     2、实现Runnable接口:Runnable适合多个相同程序代码的线程去处理同一资源的情况。实现Runable接口的实现类,并重写该接口的run方法;创建Runable实现类的实例,并以此实例作为Thread类的目标来创建Thread类的目标创建Thread对象,该Thread对象才是真正的线程对象。

     优缺点:实现了Runnable接口,还可以继承其他类,适合多个线程来处理同一个资源的情况;编程相对复杂。

     3、以匿名内部类创建:在一个方法中创建线程,当方法被调用时,线程启动。

10、如何知道线程是否已经结束

     1、run方法执行完成,线程正常结束。

     2、线程抛出一个未捕获的Exception或Error。

     3、直接调用线程的结束方法,容易导致死锁。

     isAlive方法:测试某条线程是否已经死亡,当线程处于创建,死亡两种状态时,该方法返回false

     join()方法:调用这个方法的主线程,等待加入的子线程执行完成。

11、可以利用线程来完成一个小球运动的小程序,附图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值