1.线程的概念:
在java的应用中,线程更多情况下指的是Thread,更精细一点,执行线程就是执行Thread实体下面的run方法,java通过cpu调试,交替进行这些thread,就达到了共同进行这种效果;
其中,main也被我们称作主线程。线程之间原则上是允许并行进行的,多线程就是同时在执行多个东西。
进程(process)包含多个线程,比如说打开视频算是一个进程,视频的音乐,画面,字幕和播放器支持都是线程(thread)
2.线程的具体实现和分析
线程的实现有三种方式
(1)Thread直接生成一个子类
首先建立一个类继承Thread,然后在这个类中重写run方法,run方法中就是你要执行的任务(线程),然后创建这个类的实体,最后实体使用start()方法调用
public class threadOne extends Thread{
public void run(){
System.out.println("输出另一个线程");
}
}
threadOne t=new threadOne();
t.start();
//main这里被称作主线程,而thread的run方法可以理解为另一个线程
//另一个线程的调用方法为继承thread,重写run,创建对象,调用start
(2)实现Runnable接口,
首先也是创建一个类实现接口,类中重写run方法,然后创建类的实体,再用类的实体创建Thread类,最后再用start
public class threadRunable implements Runnable{
public void run(){
}
}
threadRunable tr=new threadRunable();
Thread a=new Thread(tr,"name");
Runnable实现的方式更为常用,他可以为一个类创建多个线程,并且可以给每个线程取名字
每个线程都是独立的,但是依托于同一个对象产生的线程,是共用这个类中的属性的,但是方法确实是自己在执行自己的
举个例子:
public class threadRunable implements Runnable{
int a=10;
public void run(){
while(a>0){
System.out.println(Thread.currentThread().getName()+a--);
}
}
//这里注意一个问题,比如说我们有多个
}
threadRunable tr=new threadRunable();
Thread a=new Thread(tr,"a");
Thread b=new Thread(tr,"b");
Thread c=new Thread(tr,"c");
Thread d=new Thread(tr,"d");
a.start();b.start();c.start();d.start();
执行结果就是这样的
每个数字都会被一个线程读取一次,但是不会发生重叠