my 2 pence worth.... i am not  sure sure "if the the single-threaded  approach of nodejs  is better" : simply put,   nodejs does not support  multi-threading.  that can translate loosely to " everything  runs in a single  thread". Now, I am not quite sure how  it can "compare" to a multi-threaded system , as a "multi" threaded system can support both as  a single thread (like nodejs ) and  multiple threads . Its all in your application  design , and the platform  capabilities that are available to you.  
What  is  more important, in my opinion, is the ability to  support multi-tasking, in an asynchronous way .Nodejs, does provide support for multi- tasking, in a  simplified and  easy-to use package. It does have limitations on due to the lack of native support  for multi-threading. to take advantage of the multi-tasking ( and not worry.. much ) about multi-threading, think along  the lines of  designing your serverside application as performing little chunks of work over a long period of tie , and each chunk of work is  invoked, and consuming events generated from  the clientside .   Think an  event-driven design/architecture ( simple switch/case  for loops, callbacks, and data checkpointing  to files or database, can do the trick). And I will bet my  tiny dollar , that if you get  your   application to work in this fashion, sans  multi-threading, it will be a much  better design , more  robust, and if you migrate it ( and adapt  for multi-threading ) it run like on an SpaceX buster!
While  multi-threading is aways a plus for serverside implementation, it is also a powerful beast that requires a lot of experience and respect to tame and harness ( something that nodejs shields/protects you from)                                 
Another way to look at is is this : Multi-tasking is a perspective ( of running several tasks) at the application level , which multi-threading     is a perspective, at a lower level :  Multi-tasking can be mapping on to  different  implementations,   with  multi-threading being  one of them . 
Multi-threading capability
- Truth : Node.js ( currently ) does not provide native support for multi-threading in the sense of low level execution/processing threads. Java, and its implementations /frameworks, provides native support for multi-threading, and extensively too ( pre-emption, multi-tenancy, synchronous multi-threading, multi-tasking, thread pools etc ) 
- Pants on Fire(ish) : lack of multi-threading in Nodejs is a show stopper. Nodejs is built around an event driven architecture , where events are produced and consumed as quickly as possible. There is native support for functional call backs. Depending on the application design, this highlevel functionality can support what could otherwise be done by thread. s 
- For serverside applications, at an application level , what is important is the ability to perform multiple tasks, concurrently :ie multi-tasking. There are several ways to implement multi-tasking . Multi-threading being one of them, and is a natural fit for the task. That said, the concept of “multi -threading “ is is a low level platform aspect. For instance multi-threaded platform such as java , hosted/running on a single core process server ( server with 1 CPU processor core) still supports multi-multi at the application level, mapped to multi-threading at the low level , but in reality , only a single thread can execute at any ontime. On a multi-core machine with sa y 4 cores , the same multi-tasking at application level is supported , and with up to 4 threads can executing simultaneously at any given time. The point is, in most cases, what really matters is the support for mult-tasking, which is not always synonymous with multi-threading. 
- Back to node.js , the real discussion should be on application design and architecture , and more specifically, support for MULTI-TASKING. In general, there is a whole paradigm shift between serverside applications and clientside or standalone applications, more so in terms of design, and process flow. Among other things, server side applications need to run along side other applications( onthe server ), need to be resilient and self contained (not affect the rest o f the server when the application fails or crashes ) , perform robust exception handling ( ie recover from errors, even critical ones ) and need to perform multiple tasks . 
- Just the ability to support multi-tasking is a critical capability for any server side technology . And node.js has this capability, and presented in a very easy to use packaging . This all means that design for sever side applications need to focus more on multi-tasking, and less on just multi-threading. Yes granted, working on a server-side platform that supports multi-threading has its obvious benefits ( enhanced functionality , performance) but that alone does not resolve the need to support multi-tasking at the application level . Any solid application design for server side applications ,AND node.js must be based on multi-tasking through event generation and consumption ( event processing). In node.js , the use of function callbacks, and small event processors (as functions ), with data checkpointing ( saving processing data , in files or data bases) across event processing instances is key.
What else for Node.js vs Java
- a whole lot more! Think scalability , code management , feature integration , backward, forward compatibility , return on investment , agility, productivity …
- ,… to cut on “verbosity” of this article , pun intended :), we will leave it at this for now :)
whether you agree or not, please shoot the messenger ( Quora) and not the opinions!