java多线程基础

2017-02-13  本文已影响0人  joshul
进程与线程的区别
进程

进程简单的来说就是在内存中运行的应用程序,一个进程可以启动多个线程。
比如在windows中一个运行EXE文件就是一个进程。

线程

同一个线程中的进程共用相同的地址空间,同时共享进程所拥有的内存和其他资源。

线程Demo-继承Thread类

首先我们我们继承java.lang.Thread类来创建线程。

public class TestThread {
    public static void main(String[] args) {
        System.out.println("主线程ID是:" + Thread.currentThread().getId());
        MyThread my = new MyThread("线程1");
        my.start() ;
        
        MyThread my2 = new MyThread("线程2") ;
        /**
         * 这里直接调用my2的run()方法。
         */
        my2.run() ;
    }
}
class MyThread extends Thread {
    private String name;
    public MyThread(String name) {
        this.name = name;
    }
    @Override
    public void run() {
        System.out.println("名字:" + name + "的线程ID是="
                + Thread.currentThread().getId());
    }
}
主线程ID是:1
名字:线程2的线程ID是=1
名字:线程1的线程ID是=9

线程Demo-实现Runnable接口

除了继承java.lang.Thread类之外,我们还可以实现java.lang.Runnable接口来创建线程。

public class TestRunnable {
    public static void main(String[] args) {
        System.out.println("主线程的线程ID是"+Thread.currentThread().getId());
        MyThread2 my = new MyThread2("线程1") ;
        Thread t = new Thread(my) ;
        t.start() ;
        
        MyThread2 my2 = new MyThread2("线程2") ;
        Thread t2 = new Thread(my2) ;
        /**
         * 方法调用,并不会创建线程,依然是主线程
         */
        t2.run() ;
    }
}
class MyThread2 implements Runnable{
    private String name ;
    public MyThread2(String name){
        this.name = name ;
    }
    @Override
    public void run() {
        System.out.println("线程"+name+"的线程ID是"+Thread.currentThread().getId());
    }
    
    
}

主线程的线程ID是1
线程线程2的线程ID是1
线程线程1的线程ID是9

优雅的终止线程

有三种方法可以终止线程,如下:

  1. 使用退出标识,使线程正常的退出,也就是当run()方法完成后线程终止。
  2. 使用stop()方法强行关闭,这个方法现在已经被废弃,不推荐使用
  3. 使用interrupt()方法终止线程。
java多线程思维图
Paste_Image.png
上一篇 下一篇

猜你喜欢

热点阅读