Java多线程基本技能
2018-03-21 22:47
169 查看
一、进程和线程的区别
进程:进程是系统进行资源分配和调度的一个独立单位,进程间的切换会有较大的开销,一个进程包含1–n个线程。
线程:进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。
一句话总结它们的优缺点:线程执行开销小,但不利于资源的管理和保护年进程则相反。
二、Java实现多线程的方式
(1)、继承Thread类
(2)、实现Runnable接口
(3)、使用ExecutorService、Callable、Future实现由返回结果的多线程
ExecutorService是一个线程池接口,可返回值的任务必须实现Callable接口,无返回值得任务必须实现Runnable接口。执行Callable任务后,可以获取一个Future对象,在该对象上调用get就可以获取到Callable任务返回的Object了,再结合ExecutorService接口就可以实现有返回结果的多线程了。
三、线程中常用方法
1、Thread.currentThread()
2、isLive()
3、sleep()
4、getId()
5、interrupt()和interrupted() 和 isInterrupted()
interrupt()终止线程。
interrupted() 判断线程是否终止,已经终止返回true,并且 执行后将状态标志清除为false
isInterrupted() 判断线程是否终止,已经终止返回true。
进程:进程是系统进行资源分配和调度的一个独立单位,进程间的切换会有较大的开销,一个进程包含1–n个线程。
线程:进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。
一句话总结它们的优缺点:线程执行开销小,但不利于资源的管理和保护年进程则相反。
二、Java实现多线程的方式
(1)、继承Thread类
(2)、实现Runnable接口
class Thread1 extends Thread{ @Override public void run() { for(int i=0;i<5;i++){ System.out.println(Thread.currentThread().getName()+i); } } } class Thread2 implements Runnable{ @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<5;i++){ System.out.println(Thread.currentThread().getName()+i); } } } public class ThreadDemo { public static void main(String[] args) { // TODO Auto-generated method stub Thread1 thread1=new Thread1(); thread1.setName("线程一:"); Thread2 thread2=new Thread2(); thread1.start(); new Thread(thread2,"线程二:").start();; } } 结果============= 线程一:0 线程二:0 线程一:1 线程一:2 线程一:3 线程二:1 线程一:4 线程二:2 线程二:3 线程二:4
(3)、使用ExecutorService、Callable、Future实现由返回结果的多线程
ExecutorService是一个线程池接口,可返回值的任务必须实现Callable接口,无返回值得任务必须实现Runnable接口。执行Callable任务后,可以获取一个Future对象,在该对象上调用get就可以获取到Callable任务返回的Object了,再结合ExecutorService接口就可以实现有返回结果的多线程了。
三、线程中常用方法
1、Thread.currentThread()
public class ThreadDemo { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(Thread.currentThread().getName()); } } main
2、isLive()
3、sleep()
4、getId()
5、interrupt()和interrupted() 和 isInterrupted()
interrupt()终止线程。
interrupted() 判断线程是否终止,已经终止返回true,并且 执行后将状态标志清除为false
isInterrupted() 判断线程是否终止,已经终止返回true。
相关文章推荐
- 《精通Flash:基本技能、视觉设计与商业案例》
- 程序员需要具备的基本技能
- 程序员需要具备的基本技能
- 学习测试的基本技能
- 程序员最需要具备的基本技能!
- Linux 运维工程师的十个基本技能点
- 孤独的个人在社会中生存应掌握的基本健康技能(个人分析)
- C/C++基本编程技能【转】
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 基本技能的重要性
- Git 基本技能技巧
- 程序员需要具备的基本技能
- 程序员需要具备的基本技能
- 做Manager的18项基本技能
- 程序员需要具备的基本技能
- {软件设计师之路}程序员需要具备的基本技能
- 职业技能——面向对象软件开发实践之基本技能训练
- Java多线程(三) Thread和Runnable的基本用法
- 程序员需要具备的基本技能