当我通过另一个线程保存她时,为什么我不能显示我的arrayList?] <

问题描述 投票:0回答:2
您好,我在显示外部类的列表时遇到问题。我尝试使用public void show()方法,但列表为空。我认为问题出在线程上,这可能吗?谁能解释为什么会这样?

public class CollectionsOperation { private List<Client> bufferedReaderClientLIst = Collections.synchronizedList(new ArrayList<Client>()); BufferedReader bf = null; private static final String fileName = "clients.txt"; public void bufferedReaderCollection() throws IOException { String line; try { bf = new BufferedReader(new InputStreamReader( new FileInputStream(fileName), "UTF-8")); while ((line = bf.readLine()) != null) { String[] split = line.split(";"); String nameCompany = split[0].substring(2); String adress = split[1]; String phoneNumber = split[2]; String emailAdress = split[3]; Client k = new Client(nameCompany, adress, phoneNumber, emailAdress); bufferedReaderClientLIst.add(k); } } catch (IOException e) { } } public void runBufferedReader() { Thread t = new Thread(new CreateList()); t.start(); } public void show() { System.out.println(bufferedReaderClientLIst); } private class CreateList implements Runnable { @Override public void run() { CollectionsOperation o = new CollectionsOperation(); try { o.bufferedReaderCollection(); } catch (IOException e) { e.printStackTrace(); } } } }

您好,我在显示外部类的列表时遇到问题。我尝试使用public void show()方法,但列表为空。我认为问题出在线程上,这可能吗?谁能...
java multithreading arraylist bufferedreader inner-classes
2个回答
0
投票
这实际上取决于您何时以及如何开始呼叫o.show()。由于此列表是可变的,并且不固定。如果确定在o.show

0
投票
问题很简单,您的方法CreateList::run创建了CollectionsOperation的新实例。因此,原始对象方法show将无法访问相同的数据。
© www.soinside.com 2019 - 2024. All rights reserved.