java如何输出线程的标识符_Java多线程面试题
1、在Java中什么是進程,什么是線程進程:進程是程序執行的一個實例,進程是線程的容器。程序是指令、數據及其組織形式的描述,進程是程序的實體。
線程:有時被稱為輕量級進程(Lightweight Process,LWP),是程序執行流的最小單元。線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以并發執行。
在java中,進程大致等于JVM,線程屬于JVM,線程可以被java應用程序在運行時動態的創建和停止。
2、Java程序中至少有幾個線程?
每個java程序在main線程內執行,因此每個java程序至少有一個線程
3、每一個Java線程都有哪些屬性線程的標識符id
線程的名稱
線程優先級
線程的狀態
線程所屬的線程組
4、線程有哪些狀態NEW:初始狀態,線程被構建,但是還沒有調用start方法
RUNNABLE:運行狀態,Java線程將被操作系統中的就緒和運行兩種狀態籠統的稱作運行中
BLOCKED:阻塞狀態,表示線程阻塞于鎖
WAITING:等待狀態,表示線程進入等待狀態,進入該狀態表示當前線程需要等待其它線程做出一些特定的動作(通知或中斷)
TIME_WAITING: 超時等待狀態,該狀態不同于WAITING,它可以在指定的時間內自行返回的
TERMINATED:終止狀態,表示當前線程已經執行完畢
JDK安裝目錄下bin目錄下執行命令jstack工具可以查看代碼運行時的線程信息。
5、線程的創建方式繼承Thread類創建線程類
實現Runnable接口
一般實現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();
}
}
}
調用run方法時,是在main線程內部執行的。main
myThread
8、什么是Daemon線程
守護線程是一種特殊的線程,在后臺默默的完成一些系統性的服務,比如垃圾回收,JIT線程就可以理解為守護線程。與之對應的是用戶線程,用戶線程可以理解為系統的工作線程,它會完成程序應該要完成的業務操作,如果用戶線程全部結束,就意味著這個程序無事可做了,當一個Java應用內,只有守護線程時,Java虛擬機就會自然退出。
守護線程必須在線程start之前設置,否則會拋出IllegalThreadStateException
9、在Java中,那些操作是原子性的?讀和寫的操作變量是 主類型的(primitive variables)除了long 和 double
讀和寫的變量聲明了volatile
總結
以上是生活随笔為你收集整理的java如何输出线程的标识符_Java多线程面试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 接口防刷_java轻量级接口限
- 下一篇: okhttputils java_Jav