java多线程
1)进程(process)
计算机中独立运行的应用程序。
一块包含了某些资源的内存区域。操作系统利用进程,把他的工作设置为功能单元。
进程还拥有一个私有的虚拟地址空间,仅能被他所包含的线程访问。
2)线程(thread)
进程中所包含的一个或多个执行单元被称为线程。
一个线程是一个进程的一个顺序执行流。
如果一个进程是包含多个线程,我们就称它为多线程。
3)进程与线程的区别
是否存在资源共享。
4)多线程的意义
在一个应用程序中,有多个执行部分可以同步执行。
5)并发
微观上,所有得进程与线程都是走走停停的,而在宏观上,由于相差间隔非常短,就可以将这个过程看作是同时进行的,这个就是并发的理解。
6)线程状态
1、new(新建线程)。
2、Runnable(就绪状态)。
3、Running(运行状态)。
4、Blocked(阻塞状态)。
5、dead(死亡状态)。记住,你永远无法唤醒一个已经死亡的线程。
7)创建线程
1、通过继承Thread类来创建。
2、通过实现Runnable接口来创建。
3、用内部类(匿名)来创建。
4、通过callable与future来创建。
`
public class Text{
public static void main(String[]args){
//实例化
Demo demo = new Demo();
demo.start();//开始线程
}
}
class Demo extends Thread{
public static void run(){
for(int i=0;i<50;i++){
System.out.println(“hello”+"\t"+i);
}
}
}
用Runnable来创建
public class Text1{
public static void main(String[]args){
Thread run = new Thread(new Demo1());
run.start();
}
class Demo1{
public static void run(){
for(int i=0;i<50;i++){
System.out.println(“world”+"\t"+i);
}
}
}
}
最后的用callable与future创建,不常用,在这里就不举例了,感兴趣的读者可以去问问度娘,原理其实大同小异(具体我也没有做过太深入的了解)。
8)Thread提供的方法
long getId():返回该线程的标识符
String getName():返回该线程的名称
int getPriority():返回线程的优先级 分为10级。但是级别大,并不意味这先运行。
Thread.state getState():获取线程的状态
boolean isAlive():测试线程是否处于活动状态
boolean isDaemon():测试线程是否为守护线程 当运行进程停止前,守护进程会先停止。
boolean isInterrupted():测试线程是否已经中断
(前面是方法的返回格式)。
sleep方法,是一种阻塞方法,是线程在运行时会根据你的设定而延迟。
yield方法,静态方法,是线程回到就绪状态。
join方法,在一个线程运行时,强行插入另一个线程,知道插入的线程运行完毕,初始线程才能够继续执行。
谢谢观看。