Java面試題系列專題之Java基礎類庫(二)動力節(jié)點官方出品


動力節(jié)點Java學院整理
Java面試題(6)設計 4 個線程,其中兩個線程每次對 j 增加 1,另外兩個線程對 j 每次減少 1。寫出程序
public class TestThread
{
private int j;
public synchronized void inc()
{
j++;
System.out.println(Thread.currentThread().getName() + "-inc:" + j);
}
public synchronized void dec()
{
j--;
System.out.println(Thread.currentThread().getName() + "-dec:" + j);
}
public static void main(String[] args)
{
TestThread t=new TestThread();
for (int i = 0; i < 2; i++)
{
Thread inc=new Thread(new Inc(t));
Thread dec=new Thread(new Dec(t));
inc.start();
dec.start();
}
}
}
class Inc implements Runnable
{
private TestThread obj;
public Inc(TestThread obj)
{
this.obj=obj;
}
public void run()
{
// for (int i = 0; i < 100; i++)
// {
this.obj.inc();
// }
}
}
class Dec implements Runnable
{
private TestThread obj;
public Dec(TestThread obj)
{
this.obj=obj;
}
public void run()
{
// for (int i = 0; i < 100; i++)
// {
this.obj.dec();
// }
}
}
?
Java面試題(7)同步和異步有和異同,在什么情況下分別使用他們?舉例說明。
同步:上一段代碼沒的完成,下一段必須等到上一段代碼完成后才可以執(zhí)行。如買票排隊
異步:上一段代碼沒的完成,下一段不必等到上一段代碼完成就可以執(zhí)行。如手機發(fā)送短信。
?
?
Java面試題(8)sleep() 和 wait() 有什么區(qū)別?
Sleep 是指休眠給定的時間,當這個時間達到之后,線程會再次醒來。
Wait 是等待狀態(tài),多長時間不清楚,由另一個線程將其喚醒。
?
?
Java面試題(9)當一個線程進入一個對象的一個 synchronized 方法后,其它線程是否可進入此對象的其它方法?
如只其它方法是同步方法,不可以進入。如果不是可以進入。
?
Java面試題(10)輸入輸出流的理解:
在 java 使用流的機制進行數(shù)據(jù)的傳送,從文件到內(nèi)存是輸入流,從內(nèi)存到文件是輸出流,輸入流可以通過 read 讀取,輸出流以 write 或 print 寫入,對于流可以是分為高層流和低層流,低層以一個字節(jié)或字符為單位進行處理,高層流以一批數(shù)據(jù)為單位進行處理。
FileInputStream(System.in)至 InputSteamReader 至 BufferReader
OutputSteam(System.out)至 printStream
FileReader 至 BufferedReader
FileWriter 至 PrintWriter 或 bufferWriter
分類:
字節(jié)(二進制)
FileInputStream(低層輸入流)
FileOutputStream(低層輸出流)
PrintStream(高層流) System.out.println()
字符(一個 char)
FileReader
FileWriter
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 動力節(jié)點Java學院整理發(fā)布
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??轉載請注明出處
?