Java 线程

942 查看

Java基础部分 —— 线程

进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。

线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。

“同时”执行是人的感觉,在线程之间实际上轮换执行

总的来讲,主要涉及三个点

  • Thread
  • Runnable接口
  • run() 方法 和 start() 方法
  1. 所有在线程要做的事,即线程体,都写在run()方法里面,等待调用,这部分往往处理网络通信和数据库处理。
  2. start()的使用是开始线程的标志。也是线程的生命周期开始的地方。无论用前面的那种方式使用线程。

举例使用线程

使用Runnable实现

/** 
* 实现Runnable接口的类 
*/ 
public class DoSomething implements Runnable { 
    private String name; 

    public DoSomething(String name) { 
        this.name = name; 
    } 

    public void run() { 
        for (int i = 0; i < 5; i++) { 
            for (long k = 0; k < 100000000; k++) ; 
            System.out.println(name + ": " + i); 
        } 
    } 
}

/** 
* 测试Runnable类实现的多线程程序 
*/ 
public class TestRunnable { 
    public static void main(String[] args) { 
        DoSomething ds1 = new DoSomething("阿三"); 
        DoSomething ds2 = new DoSomething("李四"); 

        Thread t1 = new Thread(ds1); 
        Thread t2 = new Thread(ds2); 

        t1.start(); 
        t2.start(); 
    } 
}

使用Thread类实现:

/** 
* 测试扩展Thread类实现的多线程程序 
*/ 
public class TestThread extends Thread{ 
    public TestThread(String name) { 
        super(name); 
    } 

    public void run() { 
        for(int i = 0;i<5;i++){ 
            for(long k= 0; k <100000000;k++); 
            System.out.println(this.getName()+" :"+i); 
        } 
    } 

    public static void main(String[] args) { 
        Thread t1 = new TestThread("阿三"); 
        Thread t2 = new TestThread("李四"); 
        t1.start(); 
        t2.start(); 
    } 
}

在整个Java线程中,实现并不是最难的,相反,线程有要注意的几个难点:

  • 线程的生命周期
  • 线程的优先级与线程调度
  • 线程同步

定时器

Future接口