zoukankan      html  css  js  c++  java
  • 多线程(一)创建线程

    一.进程和线程

      1.什么是程序,进程和线程

      程序是指令和数据的有序集合,本身没有任何运行的含义,是一个静态的概念。几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。

      一个程序只有一个进程,但一个进程可以有多个线程。

      2.进程有3个特征:

      a.独立性。每个进程都有自己独立的内存空间,在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间。

      b.动态性。进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合,在进程中加入了时间的概念,进程具有自己的生命周期和各种不同的状态。

      c.并发性。多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响。

      并发性(concurrency)和并行性(parallel)是两个概念,并行指在同一时刻,有多条指令在多个处理器上同时执行,并发指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。

      3.进程3态

      就绪状态,运行状态和阻塞状态

      

      4.线程

      线程是进程的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个线程。

      线程的执行时抢占式的。

    二.线程的创建和启动

      java使用Thread类代表线程,所有线程对象都必须是Thread类或是其子类的实例。

      1.创建线程的两种方式:(1)继承Thread类    (2)实现Runnable接口(常用)

      两种方式哪种更好:优先推荐实现Runnable接口的方法,因为他还可以继承其他类。

      (1)继承Thread类 

      

     1 public class ThreadDemo {
     2     public static void main(String[] args) {
     3         MyThread myThread = new MyThread();
     4         myThread.start();
     5         for (int i = 0; i < 100; i++) {
     6             System.out.println(Thread.currentThread().getName() + "--" + i);
     7         }
     8     }
     9 }
    10 
    11 class MyThread extends Thread {
    12     @Override
    13     public void run() {
    14         for (int i = 1; i < 100; i++) {
    15             System.out.println(Thread.currentThread().getName() + "--" + i);
    16         }
    17     }
    18 }

      (2)实现Runnable接口(常用)

     1 public class RunnableDemo {
     2     public static void main(String[] args) {
     3         MyRunnable mr = new MyRunnable();
     4         Thread thread = new Thread(mr);
     5         thread.start();
     6         // 主线程输出
     7         for (int i = 0; i < 200; i++) {
     8             System.out.println(Thread.currentThread().getName() + "--" + i);
     9         }
    10     }
    11 }
    12 
    13 class MyRunnable implements Runnable {
    14     @Override
    15     public void run() {
    16         for (int i = 0; i < 200; i++) {
    17             System.out.println(Thread.currentThread().getName() + "--" + i);
    18         }
    19     }
    20 }

        

        

        

  • 相关阅读:
    java.lang.NoSuchMethodError: org.json.JSONArray.iterator()Ljava/util/Iterator 阿里云短信
    iframe高度自适应
    jQuery中的事件——《锋利的JQuery》
    jQuery中的DOM操作——《锋利的JQuery》
    JQuery选择器——《锋利的JQuery》
    JS的从理解对象到创建对象
    JS键盘事件对象之keyCode、charCode、which属性对比
    JS事件及其兼容用法
    JS中函数参数值传递和引用传递
    JS之DOM那些事
  • 原文地址:https://www.cnblogs.com/gdpdroid/p/4118330.html
Copyright © 2011-2022 走看看