线程:
1相关的概念:
进程中包含一个或多个线程。
进程:运行再系统之上的一个程序实体,具有独立的存储空间。
线程:运行再进程里面的一个子任务,没有独立的内存空间,必须共享新车的内存空间。
程序:是静态的概念。
并发:单核CPU同时切换运行线程,“抢占式”,抢时间片。
并行:对于多核CPU来说,两个任务同时进行。
2线程的特点:
cpu调度和执行的最小单元。
轻量级64kb,一般不会超过128kb。
进程中定义的变量,多个线程可以共享使用(可能会破坏数据的有效性)。
一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。
3线程的创建:
1>.继承Thread类
1.自定义的类继承Thread类;
2.重写run()方法;
3.创建线程对象;
4.调用start()方法启动线程。
//自定义的类继承Thread
class DomeThread extends Thread{
//重写run()方法
@Override
public void run() {
System.out.println("这是由继承Thread的类创建的线程");
}
}
public class TestThread {
public static void main(String[] args) {
//创建线程对象
DomeThread domeThread = new DomeThread();
//调用start()方法启动线程
domeThread.start();
}
}
2>.实现Runnable接口
1.自定义的类实现Runnable接口;
2.实现run()方法;
3.创建Thread对象,在构造方法中传入Runnable对象;
4.start()方法启动线程。
//自定义的类实现Runnable接口; class DomeThread implements Runnable{ //实现run()方法; public void run() { System.out.println("这是实现Runnable接口创建的线程"); } } public class TestThread { public static void main(String[] args) { //创建实现Runnable的对象 DomeThread domeThread = new DomeThread(); //创建Thread对象,在构造中传入Runnable对象 Thread thread = new Thread(domeThread); //启动线程 thread.start(); } }
3>.使用FutureTask和Callable接口(可以获取返回值)
1.自定义类实现Callable接口;
2.实现call()方法;
3.创建一个FutureTask对象,在构造方法中传入callableduix;
4.创建Thread对象,在构造方法中传入FutureTaskduix;
5.启动线程
6.调用FutureTask对象的get()方法获得返回值。