一、线程的相关介绍:
进程:正在运行的程序,负责了这个程序的内存空间分配,代表了内存中的执行区域。
线程:就是在一个进程中负责一个执行路径。
多线程:就是在一个进程中多个执行路径同时执行。
二、多线程的好处:
1、解决了一个进程里面可以同时运行多个任务(执行路径);
2、提高了资源利用率(注意不是提高效率)。
三、多线程的弊端:
1、降低了进程中一个线程的执行频率;
2、对多线程的管理需要额外的cpu资源消耗,多线程的使用会给系统带来上下文切换的额外负担;
3、线程安全问题(多个线程对公有变量进行写操作时,后一个线程会修改掉前一个线程存放的数据);
4、线程死锁。
四、多线程的实现
方式一:继承Thread类并重写run方法。
packagecn.itcast.thread;class DemoThread extendsThread {publicDemoThread(String name) {super(name);
}
@Overridepublic voidrun() {
System.out.println(Thread.currentThread().getName());
}
}public classDemo {public static voidmain(String[] args) {
DemoThread th1= new DemoThread("线程1");
DemoThread th2= new DemoThread("线程2");
th1.start();
th2.start();
}
}
方式二:使用Runable接口
packagecn.itcast.thread;class DemoThread implementsRunnable {
@Overridepublic voidrun() {
System.out.println(Thread.currentThread().getName());
}
}public classDemo {public static voidmain(String[] args) {
DemoThread th1= newDemoThread();
Thread t1= newThread(th1);
DemoThread th2= newDemoThread();
Thread t2= newThread(th2);
t1.start();
t2.start();
}
}
五、线程状态
创建-->可运行-->运行(临时阻塞)-->死亡
创建:新创建了一个线程对象。
可运行:线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取cpu的执行权。
运行:就绪状态的线程获取了CPU执行权,执行程序代码。
阻临时塞: 阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。
死亡:线程执行完它的任务时。