线程系列

1.什么是线程:

答:线程就是程序中单独顺序的流控制,线程本身不能运行,它只能用于程序中。

      线程是程序内的顺序控制流,只能使用分配给程序的资源和环境。

2.什么是多线程:

答:多线程则指的是在单个程序中可以同时运行多个不同的线程执行不同的任务。

3.多线程编程的目的:

答:就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU, 而只和I/0等资源打交道时,

       让需要占用CPU资源的其它线程有机会获得CPU资源。从根本上说,这就是多线程编程的目的。

4.一个进程可以包含一个或多个线程,

   一个程序实现多个代码同时交替运行就需要产生多个线程,

   CPU随机的抽出时间,让我们的程序一会做这件事情一会做另外一件事情。

5.基于进程的多任务处理是更熟悉的形式。进程(process)本质上是一个执行的程序。因此基于进程的多任务处理的

   特点是允许你的计算机同时运行两个或更多的程序。具体来说,基于进程的多任务处理使你在运用文本编辑器的时候

   可以同时运行Java编译器。在基于进程的多任务处理中,进程是调度程序所分派的最小代码单元。

6.基于线程(thread-based)的多任务处理环境中,线程是最小的执行单元。这意味着一个程序可以同时执行两个或者

   多个任务的功能。例如:一个文本编译器可以再打印的同时格式化文本。

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

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

9.多线程程序比多进程程序需要更少的管理费用。进程是重量级的任务,需要分配给它们独立的地址空间。进程间通信

   是昂贵和受限的。进程间的转换也是很需要花费时间的。另一方面,线程是轻量级的选手,它们共享相同的地址空间

   并且共同分享同一个进程。线程间通信是便宜的,线程间的转换也是低成本的。

10.java的线程模型

    java多线程的优点就在于取消了主循环/轮询机制。一个线程可以暂停而不影响程序的其他部分。

    例如:当一个线程从网络读取数据或等待用户输入时,产生的空闲时间可以被利用到其他地方。

11.多线程的优势

    a.java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程。实际上,java使用线程来使整个环境

      异步。这有利于通过防止CPU循环的浪费来减少无效部分。

    b.为更好地理解多线程环境的优势,我们可以将它与它的对照物相比较。单线程系统的处理途径是使用一种叫做

       轮询的事件循环方法。在该模型中,单线程控制在一无限循环中运行,轮询一个事件序列来决定下一步做什么,

       一旦轮询装置返回信号表名已准备好读取网络文件,事件循环调度控制管理到适当的事件处理程序。直到事件

       处理程序。直到事件处理程序返回,系统中没有其他事件处理程序。这就浪费了CPU时间。这导致了程序的一

       部分独占了系统,阻止了其他事件的执行。总的来说,单线程环境,当一个线程因为等待资源时阻塞(block,

       挂起执行),整个程序停止运行。

12.start有两个作用:

    a.为线程的启动准备资源

    b.在一定时候会调用run()方法

13.多线程的一个特点:

    当程序一旦启动以后,它的执行就不受你的控制了。

14.线程的结束:

    线程的消亡,不能通过调用一个stop()命令,而是让run()方法自然结束。run方法执行完毕,线程就退出了。

//线程的启动/开启方式

public class MyThread extends Thread {

 @Override
 public void run() {
  for (int i = 0; i < 10; i++) {
   System.out.println("Thread executed:" + i);
  }
 }

 public static void main(String[] args) {
  MyThread thread = new MyThread();
  thread.run();//直接调用方法,相当于调用一个普通类的方法
  System.out.println("---------------------------");
  //thread.start();//启动一个线程的一个方法
 }
}

说明:调用线程的start方法是开启一个线程,而直接调用线程的run方法是直接运行方法,而不是开启线程。

          创建一个线程的两种方法:继承Thread类---------->Thread implements Runnable                                                 实现Runnable接口

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值