java线程学习(一)

来源:互联网 发布:电信短信平台软件 编辑:程序博客网 时间:2024/05/30 04:41

java线程学习(一)

本文主要介绍基本的线程知识。首先,每个应用程序在运行的时候,都有一个进程。线程从属于进程,每个进程可以有多线程,多一个线程共享cpu时间片和资源。在多个线程间切换的时候需要进行上下文切换。

好,下面介绍基本的线程。
1、实现Runnable接口
2、新建线程,在线程创建时指定接口实现类。
3、运行线程。

下面介绍的是Executor,对线程进行了管理之后如何使用线程。其中,创建的Executor有多种实现,常用的实现类有这几个:newCachedThreadPool newFixedThreadPool newSingleThreadExecutor

一般情况下,使用newCachedThreadPool即可。如果在使用newCachedThreadPool有性能问题的话,可以考虑使用newFixedThreadpool。newSingleThreadExecutor执行时为单线程,不需要考虑共享问题。


好,下面是一个例子程序:
package com.xueyou.demo;import java.text.SimpleDateFormat;import java.util.Date;/** * Created by wuxueyou on 2017/8/2. */public class MyJob implements Runnable {    public final static SimpleDateFormat sf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss.SSS");    @Override    public void run() {        System.out.println(Thread.currentThread().getName() + "\t" + sf.format(new Date()));    }}

package com.xueyou.demo;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * Hello world! */public class App {    public static void main(String[] args) {        Thread thread = new Thread(new MyJob());        thread.start();        Thread thread2 = new Thread(new MyJob());        thread2.start();        System.out.println("=======================");        ExecutorService executorService = Executors.newCachedThreadPool();        for (int i = 0; i < 5; i++) {            executorService.execute(new MyJob());        }        executorService.shutdown();        System.out.println("======================");        ExecutorService executorService1 = Executors.newFixedThreadPool(5);        for (int i = 0; i < 5; i++) {            executorService1.execute(new MyJob());        }        executorService1.shutdown();        System.out.println("======================");        ExecutorService executorService2 = Executors.newSingleThreadExecutor();        for (int i = 0; i < 5; i++) {            executorService2.execute(new MyJob());        }        executorService2.shutdown();    }}

下面是运行结果: