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(); }}
下面是运行结果:
阅读全文
0 1
- java 线程学习(一)
- JAVA线程学习(一)
- Java线程学习(一)
- java线程学习(一)
- 【JAVA学习】(一)JAVA 线程
- Java 线程学习 一
- java线程学习一
- java线程学习笔记(一)
- Java学习:线程基础(一)
- Java之多线程学习(一)
- Java线程学习笔记(一)
- Java线程学习笔记(一)
- Java线程学习(一、volatile)
- java线程学习总结(一)
- Java线程学习(一)线程的创建和执行
- Java线程学习(一)线程的创建和执行
- JAVA线程学习笔记(一)
- java线程学习笔记(一)
- 小希的迷宫(并查集)
- matlab验证中心切片定理
- 关于conventer转换器
- 插入排序(Java实现)
- 排序算法 JS实现
- java线程学习(一)
- canvas制作圆形百分比统计图
- 374. Guess Number Higher or Lower
- 基于Spring实现一致性哈希(consistent hasing)redis缓存
- Django原生翻页
- 数据库事务
- matplot.pyplot 绘图学习
- CentOS 设置IP
- div左右上下居中