Java多线程(Interview)

2020-03-18  本文已影响0人  渐进逾
1、在Java中什么是进程,什么是线程

在java中,进程大致等于JVM,线程属于JVM,线程可以被java应用程序在运行时动态的创建和停止。

2、Java程序中至少有几个线程?

每个java程序在main线程内执行,因此每个java程序至少有一个线程

3、每一个Java线程都有哪些属性
4、线程有哪些状态

JDK安装目录下bin目录下执行命令jstack工具可以查看代码运行时的线程信息。

5、线程的创建方式

一般实现Runnable接口的方式更好一些,关于两者的对比,Thread和Runnable的区别

6、线程为什么不能通过Stop方法停止

stop方法过于暴力,会直接终止线程,并且立即释放这个线程所持有的锁,而这些锁是用来维持对象一致性的,如果此时,写线程写入的数据正写入一半,并强行终止,那么对象就会被写坏,同时由于锁已经被释放,另外一个等待该锁的读线程就顺利成章的读到了这个不一致的问题。 --- 《Java高并发程序设计》. 并行程序基础

7、下面的程序会输出什么
public class MultiThreading {    private static class MyThread extends Thread {        public MyThread(String name) {            super(name);
        }        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName());
        }        public static void main(String[] args) {
            MyThread myThread = new MyThread("myThread");
            myThread.run();
            myThread.start();
        }
    }
}</pre>

调用run方法时,是在main线程内部执行的。

<pre style="margin: 0px; padding: 0px; color: rgb(28, 31, 33); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(248, 250, 252); text-decoration-style: initial; text-decoration-color: initial;">main
myThread</pre>

8、什么是Daemon线程

守护线程是一种特殊的线程,在后台默默的完成一些系统性的服务,比如垃圾回收,JIT线程就可以理解为守护线程。与之对应的是用户线程,用户线程可以理解为系统的工作线程,它会完成程序应该要完成的业务操作,如果用户线程全部结束,就意味着这个程序无事可做了,当一个Java应用内,只有守护线程时,Java虚拟机就会自然退出。

守护线程必须在线程start之前设置,否则会抛出IllegalThreadStateException

9、在Java中,那些操作是原子性的?
上一篇 下一篇

猜你喜欢

热点阅读