是否可以在延伸Thread
的類中使用ArrayList
?我已經寫了一些代碼從藍牙串行讀取正在工作,但我已經添加了一個ArrayList
來跟蹤我正在閱讀的內容。但是,我得到NullPointException
在任何線路訪問結果。 我知道ArrayList
不是線程安全的(儘管我可能不完全理解這意味着什麼),所以我可能會嘗試做不可能的事情,但我認爲我會與專家一起檢查,因爲ArrayLists非常容易使用。我可以在擴展Thread的類中使用ArrayList嗎?
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private List<String> results;
public ConnectedThread(BluetoothSocket socket) {
Log.d(TAG, "create ConnectedThread");
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
List<String> results = new ArrayList<String>();
// Get the BluetoothSocket input and output streams
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) {
Log.e(TAG, "temp sockets not created", e);
}
mmInStream = tmpIn;
mmOutStream = tmpOut;
init();
}
private void init(){
code = new byte[16];
checksum = 0;
tempbyte = 0;
bytesread = -1;
if(!results.isEmpty()){
Log.i(TAG, "Already have found: " + results.size() + " things.");
}
}
public void run(){
//do things
}
}
@PatriciaShanahan在構造函數中 –
「是否可以在擴展Thread的類中使用ArrayList?」摘要:是的,當然是。 –
謝謝大家的意見,他們都有幫助,但是我只能選擇1個答案。我不習慣Java,但現在我完全明白我做錯了什麼。 – aland