一、进程、线程的区别
进程:CPU分配资源和调度的基本单位
线程:一个进程中可以有多个线程。执行不同的动作,共用进程的资源。
创建线程的目的是什么?
二、线程的实现方法
2.1 继承Thread 类
2.1.1构造(可查JDK说明)
创建mythread类,继承Thread类
package mythread;
public class mythread extends Thread {
@Override
public void run(){
for(int i=0;i<100;i++){
if(i%2 == 0)
System.out.printf("in thread,i=%d\n",i);
}
}
}
在mythreaddemo 的主函数里调用run函数和start函数启动
package mythread;
public class mythreaddemo {
public static void main(String[] args){
for(int i=0;i<100;i++){
if(i%2 == 1)
System.out.printf("i=%d\n",i);
}
mythread th1 = new mythread();
th1.run();
mythread th2 = new mythread();
th2.start();
}
}
请描述Thread类中的start()方法与run()方法的区别。
run()可以理解为对象的方法调用。run()只是线程里的一个动作,start()才是开启线程
start()是由JVM虚拟机实现的,JVM会调用线程的run()函数。没有设置优先级的情况下是分时调度的
2.1.2
2.2实现runable接口
2.3 继承Thread 类和实现runable接口对比
1. 适合多个相同的程序代码的线程去共享同一个资源。runable创建的对象,多个线程都还可以使用
2. 可以避免java中的单继承的局限性。runnable接口后面还可以继承类,还可以有自己的父类
3. 增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和数据独立。
4. 线程池只能放入实现Runable或callable类线程,不能直接放入继承Thread的类。
线程里面还可以创建线程吗?
线程死锁问题
进程线程的生命周期
生产者消费者模式