игра брюс 2048
Главная / Программирование / Программирование на Java / Тест 12

Программирование на Java - тест 12

Упражнение 1:
Номер 1
Каким образом на однопроцессорной машине исполняются многопоточные приложения?

Ответ:

 (1) на однопроцессорном компьютере многопоточные приложения не исполняются 

 (2) количество процессоров для многопоточной архитектуры не имеет значения 

 (3) рабочее время процессора разбивается на небольшие интервалы, в течение которых выполняется одна задача, после чего происходит переключение на следующую задачу  


Номер 2
Какие преимущества дает многопоточная архитектура?

Ответ:

 (1) упрощается программа, если ее алгоритм требует выполнения нескольких действий одновременно (например, обслуживание запросов)  

 (2) программа выполняется быстрее 

 (3) можно более полно использовать аппаратные ресурсы для каждой задачи  

 (4) если различные задачи требуют разных аппаратных ресурсов, причем, все они могут управляться центральным процессором без перегрузки, то за счет распределенной работы суммарное время выполнения уменьшится  

 (5) за счет управления приоритетами потоков можно настроить систему так, что, выполняя меньшее количество действий, она будет совершать больше полезной работы для пользователя  

 (6) за счет управления приоритетами потоков можно добиться ускорения работы программы  


Номер 3
Что такое приоритет потока?

Ответ:

 (1) порядковый номер потока в очереди на исполнение 

 (2) количество интервалов времени, в течение которого процессор будет обслуживать поток 

 (3) процессор сначала выполняет все задачи с более высоким приоритетом, затем – с менее высоким 

 (4) качественная характеристика, обеспечивающая распределение процессорного времени между потоками: чем выше приоритет, тем в среднем чаще будет выделяться процессорное время для такого потока  


Упражнение 2:
Номер 1
Для чего служит в Java класс Thread?
            

Ответ:

 (1) для запуска потоков 

 (2) для синхронизации потоков 

 (3) для изменения свойств (например, приоритета) потоков 

 (4) для прерывания потоков 


Номер 2
Какая функция класса Thread запускает поток?
            

Ответ:

 (1) run() 

 (2) begin() 

 (3) init() 

 (4) start() 

 (5) go() 


Номер 3
Какой метод класса Thread будет выполнен после запуска потока?
            

Ответ:

 (1) start() 

 (2) begin() 

 (3) init() 

 (4) run() 

 (5) go() 


Упражнение 3:
Номер 1
Поскольку интерфейс Runnable
                представляет собой альтернативный способ программирования потоков исполнения, можно ли в такой программе
                обойтись без класса Thread?
            

Ответ:

 (1) да 

 (2) да, если не модифицировать свойства потока (приоритет и т.п.) 

 (3) да, если не прерывать поток 

 (4) да, если не требуется взаимодействие с другими потоками 

 (5) нет 


Номер 2
Какое преимущество предоставляет интерфейс Runnable
                по сравнению с классом Thread?
            

Ответ:

 (1) позволяет более гибко работать с приоритетами потоков 

 (2) позволяет классу, содержащему логику работы, наследоваться от других классов 

 (3) позволяет обойтись без класса Thread 

 (4) никакого преимущества нет 


Номер 3
Какое преимущество предоставляет интерфейс Runnable
                по сравнению с классом Thread?
            

Ответ:

 (1) позволяет работать с потокома-демонами 

 (2) позволяет более гибко работать с приоритетами потоков 

 (3) обеспечивает автоматическую синхронизацию 

 (4) позволяет классу, содержащему логику работы, наследоваться от других классов 


Упражнение 4:
Номер 1
Для чего нужна синхронизация?

Ответ:

 (1) для одновременного запуска нескольких потоков 

 (2) для того, чтобы потоки могли работать с общими данными предсказуемым образом 

 (3) для того, чтобы потоки могли приостанавливать друг друга 

 (4) для того, чтобы потоки могли запускать друг друга 


Номер 2
Если один поток начал исполнение не synchronized-блока, указав ссылку на некий объект,
                может ли другой поток обратиться к полю этого объекта? К методу?
            

Ответ:

 (1) да, да 

 (2) да, да (если это неsynchronized-метод) 

 (3) да, нет 

 (4) нет, да 

 (5) нет, да (если это неsynchronized-метод)  


Номер 3
Если один поток начал исполнение synchronized-блока, указав ссылку на некий объект, может ли другой поток обратиться к полю этого объекта? К методу?

Ответ:

 (1) да, нет 

 (2) нет, да 

 (3) нет, да (если это не synchronized-метод) 

 (4) ничего из перечисленного 


Упражнение 5:
Номер 1
Укажите результат выполнения следующего кода:
                public abstract class SomeClass implements Runnable {
                    public final static Object one = new Object(), two = new Object();
                    public static void main(String s[]) {
                        Thread t1 = new Thread() {
                            public void run() {
                                synchronized (one) {
                                    try {
                                        Thread.sleep(1000);
                                    } catch (InterruptedException e) {
                                        e.printStackTrace();
                                    }
                                    synchronized (two) {
                                        System.out.print("1");
                                    }
                                }
                            }
                        };
                        Thread t2 = new Thread() {
                            public void run() {
                                synchronized (two) {
                                    synchronized (one) {
                                        System.out.print("2");
                                    }
                                }
                            }
                        };
                        t1.start();
                        t2.start();
                    }
                }
            

Ответ:

 (1) программа не завершит работу, на консоли появится 1 

 (2) программа не завершит работу, на консоли появится 2 

 (3) программа не завершит работу 

 (4) программа не завершит работу, на консоли появится 12 


Номер 2
Укажите возможный результат выполнения следующего кода:
                public abstract class SomeClass implements Runnable {
                    public final static Object one = new Object(), two = new Object();
                    public static void main(String s[]) {
                        Thread t1 = new Thread() {
                            public void run() {
                                synchronized (one) {
                                    synchronized (two) {
                                        System.out.print("1");
                                    }
                                }
                            }
                        };
                        Thread t2 = new Thread() {
                            public void run() {
                                synchronized (two) {
                                    synchronized (one) {
                                        System.out.print("2");
                                    }
                                }
                            }
                        };
                        t1.start();
                        t2.start();
                    }
                }
            

Ответ:

 (1) программа не завершит работу, на консоли появится 1 

 (2) программа не завершит работу, на консоли появится 2 

 (3) программа не завершит работу, на консоли появится 12 

 (4) программа завершит работу, на консоли появится 12 


Номер 3
Укажите возможный результат выполнения следующего кода:
                public abstract class SomeClass implements Runnable {
                    public final static Object one = new Object(), two = new Object();
                    public static void main(String s[]) {
                        Thread t1 = new Thread() {
                            public void run() {
                                synchronized (one) {
                                    synchronized (two) {
                                        System.out.print("1");
                                    }
                                }
                            }
                        };
                        Thread t2 = new Thread() {
                            public void run() {
                                synchronized (two) {
                                    try {
                                        Thread.sleep(1000);
                                    } catch (InterruptedException e) {
                                        e.printStackTrace();
                                    }
                                    synchronized (one) {
                                        System.out.print("2");
                                    }
                                }
                            }
                        };
                        t1.start();
                        t2.start();
                    }
                }
            

Ответ:

 (1) программа не завершит работу 

 (2) программа завершит работу, на консоли появится 1 

 (3) программа завершит работу, на консоли появится 2 

 (4) программа не завершит работу, на консоли появится 12 

 (5) программа завершит работу, на консоли появится 12 


Упражнение 6:
Номер 1
Какие из методов выбрасывают InterruptedException?
            

Ответ:

 (1) sleep 

 (2) wait 

 (3) notify 

 (4) yield 


Номер 2
Какие из методов выбрасывают InterruptedException?
            

Ответ:

 (1) wait 

 (2) notifyAll 

 (3) yield 

 (4) sleep 


Номер 3
Какие из методов выбрасывают InterruptedException?
            

Ответ:

 (1) sleep 

 (2) notifyAll 

 (3) waitAll 

 (4) wait 

 (5) yield 


Упражнение 7:
Номер 1
Каким будет результат работы следующего кода?
                public abstract  class SomeClass implements Runnable{
                    private Object lock = new Object();
                    public void lock() {
                        synchronized (lock) {
                            try {
                                lock.wait();
                                System.out.print("1");
                            } catch (InterruptedException e) {}
                        }
                    }
                    public void notifyThread() {
                        synchronized (lock) {
                            lock.notify();
                        }
                    }
                    public void unlock() {
                        synchronized (lock) {
                            lock.notify();
                            System.out.print("2");
                        }
                    }
                    public static void main(String s[]) {
                        SomeClass c = new SomeClass() {
                            public void run() {
                                lock();
                            }
                        };
                        SomeClass c1 = new SomeClass() {
                            public void run() {
                                unlock();
                            }
                        };
                        new Thread(c).start();
                        new Thread(c1).start();
                        c.notifyThread();
                    }
                }
            

Ответ:

 (1) программа не завершит работу, на консоли ничего не появится 

 (2) программа завершит работу, на консоли появится 12 

 (3) программа завершит работу, на консоли появится 21 

 (4) программа не завершит работу, на консоли появится 1 

 (5) результат трудно предугадать 


Номер 2
Каким будет результат работы следующего кода?
                public abstract  class SomeClass implements Runnable{
                    public Object lock = new Object();
                    public void lock() {
                        synchronized (lock) {
                            try {
                                lock.wait();
                                System.out.print("1");
                            } catch (InterruptedException e) {}
                        }
                    }
                    public void notifyThread() {
                        synchronized (lock) {
                            lock.notify();
                        }
                    }
                    public void unlock() {
                        synchronized (lock) {
                            lock.notify();
                            System.out.print("2");
                        }
                    }
                    public static void main(String s[]) {
                        final SomeClass c = new SomeClass() {
                            public void run() {
                                lock();
                            }
                        };
                        final SomeClass c1 = new SomeClass() {
                            public void run() {
                                unlock();
                                c.notifyThread();
                            }
                        };
                        new Thread(c).start();
                        new Thread(c1).start();
                    }
                }
            

Ответ:

 (1) программа не завершит работу, на консоли ничего не появится 

 (2) программа завершит работу, на консоли появится 12 

 (3) программа завершит работу, на консоли появится 21 

 (4) программа не завершит работу, на консоли появится 1 

 (5) результат трудно предугадать 


Номер 3
Каким будет результат работы следующего кода?
                public abstract  class SomeClass implements Runnable{
                    public static Object lock = new Object();
                    public void lock() {
                        synchronized (lock) {
                            try {
                                lock.wait();
                                System.out.print("1");
                            } catch (InterruptedException e) {}
                        }
                    }
                    public void notifyThread() {
                        synchronized (lock) {
                            lock.notify();
                        }
                    }
                    public void unlock() {
                        synchronized (lock) {
                            lock.notify();
                            System.out.print("2");
                        }
                    }
                    public static void main(String s[]) {
                        final SomeClass c = new SomeClass() {
                            public void run() {
                                lock();
                                notifyThread();
                            }
                        };
                        final SomeClass c1 = new SomeClass() {
                            public void run() {
                                unlock();

                            }
                        };
                        new Thread(c).start();
                        new Thread(c1).start();
                    }
                }
            

Ответ:

 (1) программа не завершит работу, на консоли ничего не появится 

 (2) программа не завершит работу, на консоли появится 1 

 (3) программа не завершит работу, на консоли появится 2 

 (4) программа завершит работу, на консоли появится 12 

 (5) программа завершит работу, на консоли появится 21 

 (6) результат трудно предугадать 


Упражнение 8:
Номер 1
Каким будет результат работы следующего кода?
                public abstract  class SomeClass implements Runnable{
                    private Object lock = new Object();
                    public void lock() {
                        synchronized (lock) {
                            try {
                                lock.wait();
                                System.out.print("1");
                            } catch (InterruptedException e) {}
                        }
                    }
                    public void unlock() {
                        synchronized (lock) {
                            lock.notify();
                            System.out.print("2");
                        }
                    }
                    public static void main(String s[]) {
                        new Thread(new SomeClass() {
                            public void run() {
                                lock();
                            }
                        }).start();
                        new Thread(new SomeClass() {
                            public void run() {
                                unlock();
                            }
                        }).start();
                    }
                }
            

Ответ:

 (1) программа не завершит работу, на консоли ничего не появится 

 (2) 12 

 (3) 21 

 (4) программа не завершит работу, на консоли появится 1 

 (5) программа не завершит работу, на консоли появится 2 

 (6) результат трудно предугадать 


Номер 2
Каким может быть результат работы следующего кода?
                public abstract  class SomeClass implements Runnable{
                    private Object lock = new Object();
                    public void lock() {
                        synchronized (lock) {
                            try {
                                System.out.print("1");
                                lock.wait();
                            } catch (InterruptedException e) {}
                        }
                    }
                    public void unlock() {
                        synchronized (lock) {
                            lock.notify();
                            System.out.print("2");
                        }
                    }
                    public static void main(String s[]) {
                        new Thread(new SomeClass() {
                            public void run() {
                                lock();
                            }
                        }).start();
                        new Thread(new SomeClass() {
                            public void run() {
                                unlock();
                            }
                        }).start();
                    }
                }
            

Ответ:

 (1) программа не завершит работу, на консоли ничего не появится 

 (2) программа не завершит работу, на консоли появится 1 

 (3) программа не завершит работу, на консоли появится 2 

 (4) программа не завершит работу, на консоли появится 12 

 (5) программа не завершит работу, на консоли появится 21 


Номер 3
Каким будет результат работы следующего кода?
                public abstract  class SomeClass implements Runnable{
                    private Object lock = new Object();
                    public void lock() {
                        synchronized (lock) {
                            try {
                                lock.wait();
                                System.out.print("1");
                            } catch (InterruptedException e) {}
                        }
                    }
                    public void notifyThread() {
                        synchronized (lock) {
                            lock.notify();
                        }
                    }
                    public void unlock() {
                        synchronized (lock) {
                            lock.notify();
                            System.out.print("2");
                        }
                    }
                    public static void main(String s[]) {
                        Thread t = new Thread(new SomeClass() {
                            public void run() {
                                lock();
                                try {
                                    Thread.sleep(1000);
                                } catch (InterruptedException e) {}
                                notifyThread();
                            }
                        });
                        t.start();
                        Thread t1 = new Thread(new SomeClass() {
                            public void run() {
                                unlock();
                            }
                        });
                        t1.start();
                    }
                }
            

Ответ:

 (1) программа не завершит работу, на консоли ничего не появится 

 (2) программа не завершит работу, на консоли появится 2 

 (3) программа не завершит работу, на консоли появится 1 

 (4) программа не завершит работу, на консоли появится 21 

 (5) программа не завершит работу, на консоли появится 12 

 (6) результат трудно предугадать 




Главная / Программирование / Программирование на Java / Тест 12