多线程_1_体会线程

2018-03-07  本文已影响19人  mm_cuckoo

进程和线程

进程:

进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。

线程:

在单个程序中同时运行多个线程完成不同的工作。

线程和进程的关系:

通俗的理解,一个进程包含多个线程,也就是说,进程是线程运行的基础,如果没有进程也就无从谈起线程,一个进程可以运行一个线程,也可以运行多个线程。

进程和线程这里不多介绍,主要是为下面线程做铺垫。

线程

下面介绍几种线程的写法

  1. 继承Thread类重写 run 方法,如下

    public class MyThead extends Thread {
        @Override
        public void run() {
            System.out.println("this MyThead run ......");
        }
    }
    
    
    //运行
    MyThead thead = new MyThead();
    thead.start();
    
  2. 实现Runnable接口方法, 如下

    public class MyRunnable implements Runnable {
        @Override
        public void run() {
            System.out.println("this MyRunnable run ......");
        }
    }
    
    //运行
    MyRunnable runnable = new MyRunnable();
    Thread thread = new Thread(runnable);
    thread.start();
    
  3. 直接通过Thread 类,重写Thread类中的run 方法, 如下

    Thread thread = new Thread() {
        @Override
        public void run() {
            System.out.println("this Thread run ......");     
        }
    };
    thread.start();
    
  4. 直接通过new Runnable 方法,如下

Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("this Runnable run ......");      
    }
});
thread.start();

上面介绍了四种实现线程的方法,不多解释,很简单,就是复习一下。

一些常用的API

  1. Thread.currentThread()
    说明:返回代码段正在被哪个线程调用的信息。

    • Thread.currentThread().getName();
      获取线程名
    • Thread.currentThread().getId();
      获取线程ID
    • Thread.currentThread().getPriority();
      获取线程的优先级
    • Thread.currentThread().getState();
      获取线程的状态
  2. thead.isAlive();
    说明: 判断当前的线程是否处于活动状态

    MyThead thead = new MyThead();
    thead.start();
    if (thead.isAlive()) {
        // is live
    } else {
        // no live
    }
    
  3. Thread.sleep(n);
    说明:在指定的n毫秒内让当前“正在执行的线程”休眠(暂停执行)。

    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    });
    thread.start();
    

简单介绍几个,如果想要了解更多,自己查询Java API吧!

注:以上及以后的线程相关的内容,都是基于有一定Java 基础的,在写的时候尽量让看的人都能看得懂。如有地方写错了,请及时指出,一起学习,一起进步。

上一篇 下一篇

猜你喜欢

热点阅读