写在前面的话:此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢?


 

  本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。在这之前,首先让我们来了解下在操作系统中进程和线程的区别:

  进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位)

  线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)

  线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。

  多进程是指操作系统能同时运行多个任务(程序)。

  多线程是指在同一程序中有多个顺序流在执行。

java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口.(其实准确来讲,应该有三种,还有一种是实现Callable接口,并与Future、线程池结合使用,此文这里不讲这个,有兴趣看这里Java并发编程与技术内幕:Callable、Future、FutureTask、CompletionService )

一、继承java.lang.Thread类

  这里继承Thread类的方法是比较常用的一种,如果说你只是想起一条线程。没有什么其它特殊的要求,那么可以使用Thread.(笔者推荐使用Runable,后头会说明为什么)。下面来看一个简单的实例:

 1 package com.mmzs.primary;
 2 
 3 class Thread1 extends Thread{  
 4     private String name;  
 5     public Thread1(String name) {  
 6        this.name=name;  
 7     }  
 8     public void run() {  
 9         for (int i = 0; i < 5; i++) {  
10             System.out.println(name + "运行  :  " + i);  
11             try {  
12                 sleep((int) Math.random() * 10);  
13             } catch (InterruptedException e) {  
14                 e.printStackTrace();  
15             }  
16         }  
17          
18     }  
19 }  
20 public class test1 {  
21   
22     public static void main(String[] args) {  
23 
24         Thread1 th1=new Thread1("线程A");  
25         Thread1 th2=new Thread1("线程B");  
26         th1.start();  
27         th2.start();  
28   
29     }  
30   
31 }  
test1
线程B运行  :  0
线程A运行  :  0
线程B运行  :  1
线程B运行  :  2
线程B运行  :  3
线程B运行  :  4
线程A运行  :  1
线程A运行  :  2
线程A运行  :  3
线程A运行  :  4
运行结果

相关文章: