您的位置:首页 > 编程语言 > Java开发

Java多线程基本技能

2018-03-21 22:47 169 查看
一、进程和线程的区别

进程:进程是系统进行资源分配和调度的一个独立单位,进程间的切换会有较大的开销,一个进程包含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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: