美文网首页
1.多线程基础

1.多线程基础

作者: 765197250c12 | 来源:发表于2017-09-08 00:06 被阅读6次

多线程概念

QQ就是一个进程,可以同时和好友聊天,同时下载文件或者发送表情。不同的操作可以同时进行。这些一个个的操作可以理解成为线程。

优点 ‘同一时间’进行多个任务,提高CPU利用效率。

图1-1 单任务 图1-2 多任务

多线程使用

在java中实现多线程的方式有两种,一种继承Thread类,另一种实现Runnable接口。

方式1

com.gu包下文件MyThread.java
package com.gu;

/**
 * Created by gurongkang on 2017/9/7.
 */
public class MyThread extends Thread {

  @Override
  public void run() {
    super.run();
    System.out.println("MyThread");
  }
}

com.gu包下文件Main.java
package com.gu;

public class Main {

  public static void main(String[] args) {
    MyThread myThread = new MyThread();
    myThread.start();
    System.out.println("main over");
  }
}

方式2
实现Runnable接口。

com.gu包下文件MyRunnable.java
package com.gu;

/**
 * Created by gurongkang on 2017/9/7.
 */
public class MyRunnable implements Runnable {

  @Override
  public void run() {
    System.out.println("running");
  }
}

如何使用,查看JDK文档如图1-3

图1-3 Thread构造函数

8个构造函数中,其中两个构造函数 Thread(Runnable target)Thread(Runnable target, String name),可以传递Runnable接口。

测试代码

com.gu包下文件main.java
package com.gu;

public class Main {

  public static void main(String[] args) {
//    MyThread myThread = new MyThread();
//    myThread.start();
//    System.out.println("main over");
    testRunnable();
  }


  static void testRunnable() {
    Runnable runnable = new MyRunnable();
    Thread thread = new Thread(runnable);
    thread.start();
    System.out.println("main over");
  }
}

实例变量线程安全

自定义线程类中的实例变量针对其他线程可以有共享和不共享之分,多个线程之间交互需要注意。
测试代码

package com.gu;

/**
* Created by gurongkang on 2017/9/10.
*/
public class LocalThread extends Thread {

 private int count = 5;

 public LocalThread() {
   super();
 }

 public LocalThread(String name) {
   super();
   this.setName(name);
 }

 @Override
 public void run() {
   super.run();
   while (count > 0) {
     count--;
     System.out.println(this.currentThread().getName() + " count = " + count);
   }
 }
}

(1)不共享数据

  static void testNotShareLocal() {
    Thread thread = new LocalThread("A");
    Thread thread1 = new LocalThread("B");
    Thread thread2 = new LocalThread("C");
    thread.start();
    thread1.start();
    thread2.start();
  }
不共享数据

(2)共享数据

  static void testShareLocal() {
    LocalThread localThread = new LocalThread();
    Thread thread = new Thread(localThread, "A");
    Thread thread1 = new Thread(localThread, "B");
    Thread thread2 = new Thread(localThread, "C");
    thread.start();
    thread1.start();
    thread2.start();
  }

相关文章

  • 1.多线程基础

    多线程概念 QQ就是一个进程,可以同时和好友聊天,同时下载文件或者发送表情。不同的操作可以同时进行。这些一个个的操...

  • 1. 多线程基础

    线程常见方法 start() 启动一个新线程,在新的线程中运行run方法的代码 start方法只是让线程进入就绪状...

  • 面试清单

    1. 多线程(基础) 2. Runtime(基础) 3. Runloop(基础) 4. AFN原理(基础) 5. ...

  • 多线程基础

    1.关键术语和多线程基础介绍 关于多线程的基础知识请卡如下的文章: 高并发Java(1):前言 2.基础 参考:高...

  • 【多线程】——1.线程基础

    进程 用来对应一个应用程序,每一个进程对应一定的内存地址空间,每个进程都有自己的内存空间,不同的进程运行时不会相互...

  • Android中的多线程

    1. Java多线程基础 Java多线程,线程同步,线程通讯 2. Android常用线程 HandlerThre...

  • 1.多线程基础(一)基础中基础

    1.前言 进程,线程和任务的基本概念的概括图 进程: 线程: 线程的串行: 线程和进程的区别: 多线程的优缺点: ...

  • Java基础

    Java基础 集合基础 集合框架 多线程基础 多线程框架 反射 代理 集合基础 ArrayList LinkedL...

  • 1.多线程开发-基础概念

    线程程序并不能提高程序的运行速度,但能够提高程序运行效率,让CPU的使用率更高 1.进程和线程的区别(并发与并行,...

  • iOS 多线程详解

    iOS 多线程详解 Slogan : 可能是最通俗易懂的 iOS多线程 详细解析文章 1. 基础概念 1.1 进程...

网友评论

      本文标题:1.多线程基础

      本文链接:https://www.haomeiwen.com/subject/dwbwjxtx.html