My problem is I don't know how to access the abstract run method from the ArrayList object, similar to the way I would go about accessing a virtual function from a vector object in C++
That description is misleading: neither in C++ nor Java, the run method is a part of the container. In fact, containers and collections have absolutely nothing to do with the way you call a method on an object.
I have tried doing the same technique in Java, but I've had no luck.
Java methods are always called with the . operator, there is no explicit dereferencing.
Instead of trying C++ things blindly in Java, you should learn the language properly. There are quite good tutorials on Oracle's homepage, but you could also read a book. To learn how to use
ArrayList, have a look at the official Java documentation.