1. 谈谈你对程序、进程、线程的理解
程序:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。
进程:是程序的一次执行过程,或是正在运行的一个程序。
线程:进程可进一步细化为线程,是一个程序内部的一条执行路径。
2. 代码完成继承Thread的方式创建分线程,并遍历100以内的自然数
多线程的创建:方式一:继承于Thread类
1.创建一个继承于Thread类的子类
2.重写Thread类的run()方法 ----> 将此线程执行的操作声明在run()方法中
3.创建子类的对象
4.通过此对象调用start()方法
class MyThread extends Thread{
public void run(){
for(int i = 0; i < 100; i++){
if (i % 2 == 0){
System.out.println(i);
}
}
}
}
public class MyThreadTest{
public static void main(String[] args){
MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
t1.start();
t2.start();
}
}
3. 代码完成实现Runnable接口的方法创建分线程,并遍历100以内的自然数
多线程的创建:方式二:实现Runnable接口
1.定义子类,实现Runnable接口。
2.子类中重写Runnable接口中的run方法。
3.通过Thread类含参构造器创建线程对象。
4.将Runnable接口的子类对象作为实际参数传递给Thread类的构造器中。
5.调用Thread类的start方法:开启线程,调用Runnable子类接口的run方法。
class MyThread implements Runnable{
public void run(){
for(int i = 0; i < 100; i++){
if (i % 2 == 0){
System.out.println(i);
}
}
}
}
public class MyThreadTest{
public static void main(String[] args){
MyThread myThread = new MyThread();
Thread t1 = new Thread(myThread);
Thread t2 = new Thread(myThread);
t1.start();
t2.start();
}
}
4. 对比两种创建方式
开发中:优先选择:实现 Runnable 接口的方式
原因:
- 实现的方法避免了单继承的局限性
- 多个线程可以共享同一个接口实现类的对象,非常适合多个相同线程来处理同一份资源。
联系:Thread类本身也实现了Runnable接口,public class Thread implements Runnable
相同点:两种方式都需要重写run(),将线程要执行的逻辑声明在run()方法中。
5. 说说你对IDEA中Project和Module的理解
workspace ---- project
project ---- module