SCJP刷题笔记(Part seventeen)

QUESTION 161
Given the code fragments:
class ThreadRunner implements Runnable {
public void run () { System.out.print (“Runnable”) ; }
}
class ThreadCaller implements Callable {
Public String call () throws Exception {return “Callable”; )
}
and
ExecutorService es = Executors.newCachedThreadPool ();
Runnable r1 = new ThreadRunner ();
Callable c1 = new ThreadCaller ();// line n1
es.shutdown();
Which code fragment can be inserted at line n1 to start r1 and c1 threads?
A. Future<String> f1 = (Future<String>) es.submit (r1);
es.execute (c1);
B. es.execute (r1);
Future<String> f1 = es.execute (c1) ;
C. Future<String> f1 = (Future<String>) es.execute(r1);
Future<String> f2 = (Future<String>) es.execute(c1);
D. es.submit(r1);
Future<String> f1 = es.submit (c1);
Correct Answer: D
Section: (none)
Explanation
Explanation/Reference:
 
 
 
QUESTION 162
Given the code fragment:
List<Double> doubles = Arrays.asList (100.12, 200.32);
DoubleFunction funD = d –> d + 100.0;
doubles.stream (). forEach (funD); // line n1
doubles.stream(). forEach(e –> System.out.println(e)); // line n2
What is the result?
A. A compilation error occurs at line n2.
B. 200.12
300.32
C. 100.12
200.32
D. A compilation error occurs at line n1.
Correct Answer: A
Section: (none)
Explanation
Explanation/Reference:
Explanation:
SCJP刷题笔记(Part seventeen)
 
 
 
QUESTION 163
Given:
public class Product {
int id; int price;
public Product (int id, int price) {
this.id = id;
this.price = price;
}
Public String toString () { return id + “:” + price;)
}
and the code fragment:
List<Product> products = new ArrayList <> (Arrays.asList(new Product(1, 10),
new Product (2, 30),
new Product (3, 20));
Product p = products.stream().reduce(new Product (4, 0), (p1, p2) -> {
p1.price+=p2.price;
return new Product (p1.id, p1.price);});
products.add(p);
products.stream().parallel()
.reduce((p1, p2) - > p1.price > p2.price ? p1 : p2)
.ifPresent(System.out: :println);
What is the result?
A. 4:60
B. 2:30
C. 4:60
2:30
3:20
1:10
D. 4:0
E. The program prints nothing
Correct Answer: C
Section: (none)
Explanation
Explanation/Reference:
 
 
 
QUESTION 164
Given:
class Student {
String course, name, city;
public Student (String name, String course, String city) {
this.course = course; this.name = name; this.city = city;
}
public String toString() {
return course + “:” + name + “:” + city;
}
public String getCourse() {return course;}
public String getName() {return name;}
public String getCity() {return city;}
and the code fragment:
List<Student> stds = Arrays.asList(
new Student (“Jessy”, “Java ME”, “Chicago”),
new Student (“Helen”, “Java EE”, “Houston”),
new Student (“Mark”, “Java ME”, “Chicago”));
stds.stream()
.collect(Collectors.groupingBy(Student::getCourse))
.forEach(src, res) -> System.out.println(scr));
What is the result?
A. A compilation error occurs.
B. Java EE
Java ME
C. [Java EE: Helen:Houston]
[Java ME: Jessy:Chicago, Java ME: Mark:Chicago]
D. [Java ME: Jessy:Chicago, Java ME: Mark:Chicago]
[Java EE: Helen:Houston]
Correct Answer: B
Section: (none)
Explanation
Explanation/Reference:
 
 
 
QUESTION 165
Given:
SCJP刷题笔记(Part seventeen)
What change should you make to guarantee a single order of execution (printed values 1 -100 in order)?
A. Line 3: public synchronized void run() {
B. Line 1: class MyClass extends Thread {
C. Line 2: public volatile int value;
D. Line 2: public synchronized int value;
Correct Answer: B
Section: (none)
Explanation
Explanation/Reference:
 
 
 
QUESTION 166
Given:
SCJP刷题笔记(Part seventeen)
and the code fragment:
SCJP刷题笔记(Part seventeen)
The threads t1 and t2 execute asynchronously and possibly prints ABCA or AACB.
You have been asked to modify the code to make the threads execute synchronously and prints ABC.
Which modification meets the requirement?
A. start the threads t1 and t2 within a synchronized block.
B. Replace line n1 with:
private synchronized int count = 0;
C. Replace line n2 with:
public synchronized void run () {
D. Replace line n2 with:
volatile int count = 0;
Correct Answer: A
Section: (none)
Explanation
Explanation/Reference: