Логин:   Пароль:




Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100

РассылкиАрхив Java programmingВыпуск 16-й

Java programming выпуск 16-й

Здравствуйте дорогие читатели!

Дорогие читатели в сегодняшнем номере произошли некоторые изменения внешнего вида. Прошу вас оценить данные изменения:

Начинающим

Сегодня теории не будет!

Дабы закрепить пройденный теоретический материал предлагаю пройти небольшой тест и проверить свои знания.

Тема "на заказ"

Многопоточность (продолжение)

Реализация многопоточности в Java

Для реализации многопоточности предусмотрен класс java.lang.Thread. В этом классе определены все методы, необходимые для создания потоков, управления их состоянием и синхронизации.

Как пользоваться классом Thread?

Есть две возможности.

  • Во-первых, вы можете создать свой дочерний класс на базе класса Thread. При этом вы должны переопределить метод run. Ваша реализация этого метода будет работать в рамках отдельного потока.
  • Во-вторых, ваш класс может реализовать интерфейс Runnable. При этом в рамках вашего класса необходимо определить метод run, который будет работать как отдельный поток.

    Второй способ особенно удобен в тех случаях, когда ваш класс должен быть унаследован от какого-либо другого класса (например, от класса Applet) и при этом вам нужна многопоточность. Так как в языке программирования Java нет множественного наследования, невозможно создать класс, для которого в качестве родительского будут выступать классы Applet и Thread. В этом случае реализация интерфейса Runnable является единственным способом решения задачи.

    Посмотреть описание класса Thread.

    Рассмотрим первый способ реализации многопоточности, при использовании этого способа определяем для потока отдельный класс:

    
    class DrawSmile extends Thread
    {
     . . .
     public void run()
     {
      . . .
     }
    }
    

    Здесь определен класс DrawSmile, который является дочерним по отношению к классу Thread.

    Обратите внимание на метод run. Создавая свой класс на базе класса Thread, вы должны всегда определять этот метод, который и будет выполняться в рамках отдельного потока.

    Заметим, что метод run не вызывается напрямую никакими другими методами. Он получает управление при запуске потока методом start.

    Как это происходит?

    Рассмотрим процедуру запуска потока на примере некоторого аплета.

    Вначале ваше приложение должно создать объект класса Thread:

    
    public class MultiSmile extends Applet
    {
     Thread mSmile = null;
     . . .
     public void start()
     {
      if (mSmile == null)
      {
       mSmile = new DrawSmile(this);
       mSmile.start();
      }
     }
    }
    

    Создание объекта выполняется оператором new в методе start, который получает управление, когда пользователь открывает документ HTML с аплетом. Сразу после создания поток запускается на выполнение, для чего вызывается метод start.

    Что касается метода run, то если поток используется для выполнения какой либо периодической работы, то этот метод содержит внутри себя бесконечный цикл. Когда цикл завершается и метод run возвращает управление, поток прекращает свою работу нормальным, не аварийным образом. Для аварийного завершения потока можно использовать метод interrupt.

    Остановка работающего потока выполняется методом stop. Обычно остановка всех работающих потоков, созданных аплетом, выполняется методом stop класса аплета:

    
    public void stop()
    {
     if (m_DrawRectThread != null)
     {
      mSmile.stop();
      mSmile = null;
     }
    }
    

    Напомним, что этот метод вызывается, когда пользователь покидает страницу сервера Web, содержащую аплет.

    В следующем номере мы рассмотрим реализацию интерфейса Runnable.

    Вопрос - ответ

    Вопрос: При запуске java HellowWorld выдает ошибку следующего содержания Exeption in thread "main" java.lang.NoClassDefFoundError
    Как от этого избавится ???

    Ответ: Скорее всего неправильно задан CLASSPATH.

    Вопрос: А как возможно поменять цвет текста у SWT Button ? И если все же это нельзя сделать - то почему?
    Dmitry Klymenko

    Ответ:

    button1.setForeground(Color c);

    Вопрос: Объясните, пожалуйста, простым языком, что такое Java. Я не могу понять, что это такое и с чем его едят. Дело в том, что я выхожу на некоторые сайты, которые предлагают мне загрузить эту программу, но у меня отказывается его загружать. И я не могу посмотреть анимацию открыток. В 98 он у меня стоял, а когда я установила WinXP, то его в этой программе не оказалось. Помогите мне разобраться. Пожалуйста. Валентина

    Ответ: На вопрос что такое Java читайте первые четыре выпуска.
    Что касается WinXP, этот вопрос затрагивался в 11-ом номере.

    Вопрос: Как в Java сделать что то на подобии MDI интерфейса? Андрей

    Ответ: Пример кода помещаю в раздел "Программный код..."

    Задать вопрос

    Программный код…

    
    package xeditor;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.JDesktopPane;
    import javax.swing.JInternalFrame;
    public class MainFrame extends JFrame
    {
     JPanel contentPane;
     JDesktopPane mainPane = new JDesktopPane();
     JInternalFrame iFrame1 = new JInternalFrame();
     JInternalFrame iFrame2 = new JInternalFrame();
     JButton jButton1 = new JButton();
     public MainFrame()
     {
      enableEvents(AWTEvent.WINDOW_EVENT_MASK);
      try
      {
       jbInit();
      }
      catch(Exception e)
      {
       e.printStackTrace();
      }
     }
     private void jbInit() throws Exception
     {
      contentPane = (JPanel) this.getContentPane();
      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
      this.setSize((int)screenSize.getWidth(),(int)screenSize.getHeight());
      this.setTitle("X Editor");
      jButton1.setText("Show Frame 2");
      jButton1.addMouseListener(new java.awt.event.MouseAdapter()
      {
       public void mouseClicked(MouseEvent e)
       {
        jButton1_mouseClicked(e);
       }
      });
      contentPane.add(mainPane);
      iFrame1.setTitle("Frame 1");
      iFrame1.setSize(200,200);
      iFrame1.setResizable(true);
      iFrame1.setClosable(true);
      iFrame1.setIconifiable(true);
      iFrame1.show();
      iFrame2.setTitle("Frame 2");
      iFrame2.setSize(200,200);
      iFrame2.setLocation(300,300);
      mainPane.add(iFrame1);
      iFrame1.getContentPane().add(jButton1);
      mainPane.add(iFrame2);
     }
     protected void processWindowEvent(WindowEvent e)
     {
      super.processWindowEvent(e);
      if (e.getID() == WindowEvent.WINDOW_CLOSING)
      {
       System.exit(0);
      }
     }
     void jButton1_mouseClicked(MouseEvent e)
     {
      iFrame2.show();
     }
    }
    
    

    JavaScript

    Вопрос:Вы не знаете как сделать, что бы при шелчке по кнопке "Подсчитать" суммировались все отмеченные radio и checkbox и выводились их сумма. Например суммировались числа написанные в value. Я пытался сделать, но у меня не хватило знаний JS. Будет просто замечательно, если ответ будет выводиться не в окошке а писаться в документ(document.write - что-то вроде этого).
    Алексей.

    Ответ: Вот посмотрите пример: Суммирование значений атрибута value всех отмеченные radio и checkbox и вывод их суммы.
    Правда вывод суммы осуществляется не с помощью document.write() так как при завершении загрузки докумета это несработает. Вывод осуществляется в поле ввода текста.

    Вопрос: Функция Math.random() выдаёт только числа в диапазоне [0, 1) и контролировать это нельзя. Как вывести случайное число в диапазоне от A до B:

    Ответ:

    a+((b-a)*Math.random())

    Вопрос: Я хочу сделать что бы выводилась произволная строка! например-какая нибудь фраза фоменко - как сделать? можно что бы бралось из файла на сервере или как нибудь ещё лижбы работало!
    Виталий ака bigman.

    Ответ: Такое с помощью JavaScript сделать нельзя, для этого можно использовать соответствующие технологии (JSP, PHP, ASP, Perl и др.) Но что делать тому кому недоступны данные технологии? И я поразмыслив немного придумал обходной вариант: смотрите тут.

    Вопрос: Нужен скрипт (код), функция у него такая. В чате открывается окно со смайлами (_blank), и мне нужно чтобы при нажатие на нужный смайлик его код появлялся в строке сообщения чата.

    Ответ: Смотрите реализацию примера

    Вопрос: Здраствуйте. Хотелось бы узнать несколько скриптов:
    1. Я хотел бы сделать новости в отдельном окне (определенного размера, окно IE без адресной строки). Как это сделать?
    2.Также на другой странице моего сайта загружаются новости с другого сайта, но сайт загружается полностью, что некрасиво. Можно ли задать определенное местоположение показавания страницы, чтобы одни только новости были?
    Goonya

    Ответ:
    1. Окно открывается следующим образом window.open("имя_файла","имя_окна","строка_параметров") где строка_параметров это следующие возможные свойства:
    Свойство Значение
    directories yes|no
    height количество пикселов
    menubar yes|no
    location yes|no
    status yes|no
    toolbar yes|no
    resizable yes|no
    scrollbars yes|no
    width количество пикселов
    alwaysLowered yes|no
    alwaysRaised yes|no
    dependent yes|no
    hotkeys yes|no
    outerHeight количество пикселов
    screenX количество пикселов
    screenY количество пикселов
    outerWidth количество пикселов
    innerHeight количество пикселов (заменяет height)
    innerWidth количество пикселов (заменяет width)
    titlebar yes|no
    z-lock yes|no

    2. На зтот вопрос я немогу ответить так как незнаю каким образом загружаются новости с другого сайта.

    Вопрос: Как с помощью JavaScript(формы) отправить на указанный email файл в прикрепленном виде?
    Андрей

    Ответ: С помощью JavaScript такого сделать нельзя. Для этого в форме надо использовать, например, cgi-скрипт работающий на стороне сервера.
    А вот с помощью Java можно сделать подобное с помощью апплета. В ближайшем номере мы рассмотрим подобный пример.

    Задать вопрос



  • Ален Лиссуар
    "WMI: программирование на JavaScript и VBScript"
    Подробнее>>
    Заказать>>


    H. Мухамедзянов
    "Java. Серверные приложения"
    Подробнее>>
    Заказать>>

    Узнай о чем ты на самом деле сейчас думаешь тут.


    [an error occurred while processing this directive]



    Apache Struts 2.0.11
    Apache MyFaces Trinidad Core 1.2.3.
    Sun переводит мобильные устройства с Java ME на Java SE
    Хакерская атака!



    Выпуск 29-й
    Выпуск 28-й
    Выпуск 27-й
    Выпуск 26-й
    Выпуск 25-й
    Выпуск 24-й
    Выпуск 23-й
    Выпуск 22-й
    Выпуск 21-й
    Выпуск 20-й
    Выпуск 19-й
    Выпуск 18-й
    Выпуск 17-й
    Выпуск 16-й
    Выпуск 15-й
    Выпуск 14-й
    Выпуск 13-й
    Выпуск 12-й
    Выпуск 11-й
    Выпуск 10-й
    Выпуск 9-й
    Выпуск 8-й
    Выпуск 7-й
    Выпуск 6-й
    Выпуск 5-й
    Выпуск 4-й
    Выпуск 3-й
    Выпуск 2-й
    Выпуск 1-й