Java基础知识之多线程

  
 
 
  本文主要是详解Java基础知识之多线程,更多IOS技术知识,请登陆疯狂软件教育官网。
  1、认识线程
  a) 对于线程来说,容易混淆的还有进程,我们用一个例子来区分它们,每次打开一个word文档,这就是一个进程,一个word中的拼写检查这是一个线程,再如每登陆一个QQ,这是一个进程,QQ中的每一个会话都是一个线程。
  b)对于只有一个CPU的电脑来说,一个时间点只有一个进程占用CPU
  2、Java中如何实现线程
  Java中实现多线程可以采用:继承Thread类,或,实现Runnable接口
  a)继承Thread类,这个方式必须覆写run()方法
  [java]
  class 类名称 extends Thread{
  //成员变量
  //成员方法
  public void run(){
  //线程主体
  }
  }
  小例子
  [java]
  import java.util.Collection;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  class myThread extends Thread {
     Map<String,? extends Collection<Integer>> map= new HashMap<String,List<Integer>>();
  private String name;
  public myThread(String name){
  this.name = name;
  }
  public void run(){
  for(int i = 0; i < 10; i++){
  System.out.println(name + "运行,i="+i);
  }
  }
  }
  public class MyThread {
  public static void main(String[] args){
  myThread mt1 = new myThread("线程A");
  myThread mt2 = new myThread("线程B");
  mt1.start();
  mt2.start();
  }
  }
  b)实现Runnable接口,覆写run()方法
  [java]
  public class Thread2 implements Runnable {
  //成员变量
  //成员方法
  public void run(){
  //线程主体
  }
  }
  小例子:
  [java]
  class A implements Runnable{
  //成员变量
  //成员方法
  private String name;
  public A(String name){
  this.name = name;
  }
  public void run(){
  //线程主体
  for(int i = 0; i < 10; i++){
  System.out.println(name + "运行,i="+i);
  }
  }
  }
  public class Thread2{
  public static void maim(String[] args){
  A a1 = new A("线程A");
  A a2 = new A("线程B");
  Thread t1 = new Thread(a1);
  Thread t2 = new Thread(a2);
  t1.start();
  t2.start();
  }
  }
  3、两种方式的区别及使用结论
  a)使用Runnable接口可以实现资源的共享,而Thread类不行.
  b)避免单继承带来的局限性
  在开发中使用Runnable接口是比较合适的
  4、线程的状态
  创建状态:准备好一个多线程对象,Thread t = new Thread();
  就绪状态:调用start()方法,等待CPU调度
  运行状态:执行run()方法
  阻塞状态:暂时停止执行,可能将资源给其他线程使用
  终止状态:线程执行完毕,不再使用

你可能感兴趣的:(java,多线程,import,基础知识,电脑)