黑马程序员技术交流社区

标题: 【太原校区】Java基础部分面试题分析解答 [打印本页]

作者: 冯瑞君老师    时间: 2020-9-23 15:09
标题: 【太原校区】Java基础部分面试题分析解答
本帖最后由 冯瑞君老师 于 2020-9-23 15:30 编辑

面试经验-面试题分析解答

面试问题:说一说线程,多线程(一)


一.相关概念
程序:静态的代码
进程:动态执行的程序
线程:进程中要同时干几件事时,每一件事的执行路径成为线程。线程有6种状态:新建,运行(可运行),阻塞,等待,计时等待和终止

知道线程后,要知道下面这两种情况:
并行:多个CPU同时执行多个任务,比如:多个人同时做不同的事
并发:一个CPU(采用时间片)同时执行多个任务,比如秒杀平台,多个人做同件事.


二.如何创建一个线程?

有两种方法可以创建新的执行线程。(主要的)

1.继成java.lang.Thread, 重写run()方法。
[Java] 纯文本查看 复制代码
public class Main {
    public static void main(String[] args) {
        new MyThread().start();
    }
}
class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "\t" + Thread.currentThread().getId());
    }
}
Thread 类
[Java] 纯文本查看 复制代码
package java.lang;
public class Thread implements Runnable {
        // 构造方法
        public Thread(Runnable target);
        public Thread(Runnable target, String name);
        
        public synchronized void start();
}
Runnable 接口
[Java] 纯文本查看 复制代码
package java.lang;
@FunctionalInterface
public interface Runnable {
    pubic abstract void run();
}

2.实现java.lang.Runnable接口,重写run()方法,然后使用Thread类来包装
[Java] 纯文本查看 复制代码
public class Main {
    public static void main(String[] args) {
             // 将Runnable实现类作为Thread的构造参数传递到Thread类中,然后启动Thread类
        MyRunnable runnable = new MyRunnable();
        new Thread(runnable).start();
    }
}

class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "\t" + Thread.currentThread().getId());
    }
}

三.区别:四.线程的状态








作者: RRL    时间: 2020-9-23 15:32
用起来用起来




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2