`

总结---多线程(1)

阅读更多

多线程是java提供的一种机制,它允许多条指令在系统中并发执行,彼此间互相独立。

实现多线程的两种方式:

1.继承Thread类

步骤:1,继承Thread。
         2,复写Thread类中的run方法,将多个控制单元要运行的代码存放其中。
              其实run方法,就是存放线程要运行的代码区域。
         3,通过建立子类对象,创建控制单元。
         4,调用控制单元的start方法,开启线程,并运行run方法

例:

public class MyRunnable {
 public static void main(String[] args) {
  for (int i = 0; i < 5; i++) {
   new MyThread();
  }
  while (true) {
   System.out.println(Thread.currentThread().getName() + "主线程正在运行");//currentThread()方法返回当前线程对象

                                                                                                                            getName()获得当前线程的名称
  }
 }
}
class MyThread extends Thread {
 private static int count = 0;

 MyThread() {
  super("" + ++count);   //调用Thread类的构造方法Thread(String name) 给线程起一个名字
  start();
 }
 public void run() {                //run()方法内是线程要执行的代码
  while (true) {
   System.out.println(Thread.currentThread().getName() + "子线程正在运行");
  }
 }
}

 

2.实现Runnable接口

步骤:1,建立Runnable接口的子类。
         2,覆盖run方法。
         3,通过Thread类建立控制单元。并将实现了Runnable接口的子类对象作为参数传递给Thread类的构造函数。

              (为什么呢?为让创建的控制单元去运行自定义的run方法。因为该run方法所属的是Runnable接口的子类对象。)

         4,调用控制单元的start方法开启线程,并运行run方法。

 例:

public class MyRunnable {
 public static void main(String[] args) {
  MyThread mt = new MyThread();
  for (int i = 0; i < 5; i++) {
   Thread t = new Thread(mt);   //通过Thread类的构造函数Thread(Runnable target) 跟当前接口引用建立联系
   t.start();
  }
  while (true) {
   System.out.println(Thread.currentThread().getName() + "主线程正在运行");
  }
 }

}

class MyThread implements Runnable{
 public void run() {
  while(true)
   System.out.println(Thread.currentThread().getName() + "子线程正在运行");
  }
 }

使用实现Runnable创建多线程的优缺点:避免了java单继承特性带来的局限性,使得我们能够在一个类中包容所有的代码,有利于封装,它的缺点在于,我们只能使用一套代码,若想创建多个线程并使各个线程执行不同的代码,则仍必须额外创建类,如果这样的话,在大多数情况下也许还不如直接用多个类分别继承 Thread 来得紧凑。

 线程的四种状态:

1. 被创建状态:线程对象已经被创建但是还没有调用start()方法开启线程

2. 运行状态:线程可以执行,虽然不一定正在执行。CPU 时间随时可能被分配给该线程,从而使得它执行。

3. 消亡状态:正常情况下 run() 执行完毕使得线程死亡或者调用 stop()后,但是调用stop()会产生异常。
4. 冻结状态:线程不会被分配 CPU 时间,无法执行。在使用sleep(),wait(),notify()时。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liuxiaolei7676/archive/2010/04/02/5446057.aspx

分享到:
评论

相关推荐

    Java多线程-知识点梳理和总结-超详细-面试知识点.docx

    "Java多线程-知识点梳理和总结-超详细-面试知识点" Java多线程是Java编程语言中最基本也是最重要的概念之一。多线程编程可以提高程序的执行效率、改善用户体验和提高系统的可扩展性。但是,多线程编程也存在一些...

    Java多线程-多线程知识点总结和企业真题

    ### Java多线程知识点总结及企业真题解析 #### 一、知识点总结 ##### (1)多线程相关概念 1. **程序、进程和线程的区分**: - **程序**:为了完成特定的任务而编写的指令集合。它是静态的概念。 - **进程**:...

    Java多线程编程总结

    ### Java多线程编程总结 #### 一、Java线程:概念与原理 1. **操作系统中线程和进程的概念** - 当前的操作系统通常为多任务操作系统,多线程是实现多任务的一种手段。 - **进程**:指内存中运行的应用程序,每个...

    C++-多线程编程总结-实例讲解.doc

    以下是对C++多线程编程的一些总结和实例讲解: 1. **并发**:并发是多线程的核心,它允许程序在多个线程间分配工作,从而提高整体性能。C++11及更高版本提供了`std::thread`库来支持线程创建和管理。生产者-消费者...

    自己总结的多线程

    ### 多线程基础 #### 1. 多线程概念 多线程是指在一个程序中包含多个控制流,它们可以并发执行不同的任务。在Java中,多线程的实现通常借助于`Thread`类或实现`Runnable`接口。多线程能够提高CPU的利用率,改善应用...

    windows多线程总结

    【Windows多线程总结】 Windows操作系统提供了一套完整的API来支持多线程编程,使得开发者可以在同一进程中同时执行多个线程,实现并发处理任务。本文将深入探讨Windows多线程编程的基本概念、线程同步、线程池以及...

    VB.Net-C#多线程Thread-代理委托delegate编程

    最近收集的VB.Net-C#多线程Thread-代理委托delegate编程。文章列表: c#.net多线程同步.txt C#WebBrowser页面与WinForm交互技巧一.txt ...微软.Net开发中的多线程编程总结.txt 线程中的参数传递.txt

    C#内存释放-线程控制-线程启动-线程暂停

    此外,`volatile`关键字可用于确保多线程环境中的数据一致性,确保所有线程都能看到最新值。 在Windows Forms应用程序中,主线程(UI线程)负责更新用户界面。因此,长时间运行的操作不应在主线程上执行,以免阻塞...

    第二次学习总结-多线程多进程学习.docx

    在IT领域,多线程和多进程编程是提高系统效率和并发能力的重要手段。下面将详细阐述这些概念及其相关的知识点。 一、多线程和多进程 1. 进程的创建与使用: - `fork()`:创建新进程,复制调用进程的所有资源,两...

    并发服务器-多线程服务器详解

    return -1; } // 等待线程结束 pthread_join(thread_id, NULL); return 0; } ``` #### 五、总结 多线程技术为并发服务器的实现提供了强大的支持。通过理解线程的基本概念和掌握关键的操作函数,开发人员可以...

    面试知识点总结--线程.pdf

    这有助于在多线程环境下保证数据的一致性。 3. **不推荐使用的线程控制方法**: - `stop()`:不推荐使用,因为它会强制终止线程,可能会导致对象处于不一致的状态,进而引发不可预测的行为。 - `suspend()`:同样...

    JVM调优总结 -Xms -Xmx -Xmn -Xss

    JDK5.0 以后每个线程堆栈大小为 1M,以前每个线程堆栈大小为 256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限...

    多线程知识总结

    ### 多线程知识总结 #### 一、线程基础概念 **线程状态:** 在探讨多线程之前,我们需要了解线程的基本状态转换。一个典型的线程生命周期包括以下几个阶段: 1. **Start(启动):** 当线程被创建后调用`start()`...

    MFC多线程完整总结及示例代码

    MFC 多线程完整总结及示例代码 多线程是一种重要的编程技术,用于实现并行处理和提高系统性能。在 MFC 中,多线程编程可以通过 Win32 API 函数和 MFC 类库来实现。在本文中,我们将对多线程的基本概念、多线程编程...

    JavaSE专题-多线程总结.doc

    1. **多线程技术介绍** - **进程**:一个进程是操作系统分配给应用程序的内存空间,用于执行程序。每个应用程序在内存中都有其独立的进程。 - **线程**:线程是进程中的执行单元,负责程序的实际运行。在同一个...

    andorid- 多线程

    ### Android多线程知识点解析 #### 一、多线程的重要性及原理 在Android应用程序开发中,使用多线程技术可以显著提升应用的性能和用户体验。由于Android的应用程序默认运行在一个名为“主线程”(Main Thread)的...

    java多线程编程总结

    ### Java多线程编程总结 #### 一、Java线程:概念与原理 - **操作系统中线程和进程的概念** 当前的操作系统通常都是多任务操作系统,多线程是一种实现多任务的方式之一。在操作系统层面,进程指的是内存中运行的...

    多线程精心总结

    【多线程精心总结】 在Java编程中,多线程是一种重要的并发处理方式,它可以提高程序的执行效率,尤其在处理大量并发任务时。本文将深入探讨Java线程中的几个关键概念,包括`yield()`、`sleep()`、`wait()`、`join...

Global site tag (gtag.js) - Google Analytics