Лекция: Язык JAVA. Потоки.

java.sun.com/javase/6/docs/api/java/lang/Thread.html

www.freejavaguide.com/java-threads-tutorial.pdf

class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrime = minPrime; } public void run() { //compute primes larger than minPrime... }}   PrimeThread p = new PrimeThread(143);p.start(); class PrimeRun implements Runnable { long minPrime; PrimeRun(long minPrime) { this.minPrime = minPrime; } public void run() { //compute primes larger than minPrime... }}   PrimeRun p = new PrimeRun(143);new Thread(p).start();

The Java language provides two keywords for ensuring that data can be shared between threads in a controlled manner: synchronized and volatile.

Synchronized has two important meanings: it ensures that only one thread executes a protected section of code at one time (mutual exclusion or mutex), and it ensures that data changed by one thread is visible to other threads (visibility of changes).

Without synchronization, it is easy for data to be left in an inconsistent state. Synchronization allows to define blocks of code that must run atomically, in which they appear to execute in an all-or-nothing manner, as far as other threads can tell.

It is possible for two threads executing on two different processors to see two different values for the same variable! (if a memory location is modified in the cache on one processor, it is not necessarily visible to other processors until the writer's cache is flushed and the reader's cache is invalidated)

Volatile is simpler than synchronization and is suitable only for controlling access to single instances of primitive variables — integers, booleans, and so on. When a variable is declared volatile, any write to that variable will go directly to main memory, bypassing the cache, while any read of that variable will come directly from main memory, bypassing the cache. This means that all threads see the same value for a volatile variable at all times.

 

The Object class defines the methods wait(), notify(), and notifyAll(). To execute any of these methods, you must be holding the lock for the associated object.

Wait() causes the calling thread to sleep until it is interrupted with Thread.interrupt(), the specified timeout elapses, or another thread wakes it up with notify() or notifyAll().

When notify() is invoked on an object, if there are any threads waiting on that object via wait(), then one thread will be awakened. When notifyAll() is invoked on an object, all threads waiting on that object will be awakened.

public class SyncExample { private static lockObject = new Object(); private static class Thread1 extends Thread { public void run() { synchronized (lockObject) { x = y = 0; System.out.println(x); } } } private static class Thread2 extends Thread { public void run() { synchronized (lockObject) { x = y = 1; System.out.println(y); } } } public static void main(String[] args) { new Thread1().run(); new Thread2().run(); } } The simplest way to create a synchronized block is to declare a method as synchronized. This means that before entering the method body, the caller must acquire a lock: public class Point { public synchronized void setXY(int x, int y) { this.x = x; this.y = y; } } For ordinary synchronized methods, this lock will be the object on which the method is being invoked. For static synchronized methods, this lock will be the monitor associated with the Class object in which the method is declared. Just because setXY() is declared as synchronized doesn't mean that two different threads can't still execute setXY() at the same time, as long as they are invoking setXY() on different Point instances. Only one thread can execute setXY(), or any other synchronized method of Point, on a single Point instance at one time.

 


XML. Основные понятия и конструкции языка.

ru.wikipedia.org/wiki/XML

sytchev.ru/xml.sintaksisxml

www.w3schools.com/xml/xml_namespaces.asp

XML (eXtensible Markup Language — расширяемый язык разметки) — рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил. XML — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. XML является упрощённым подмножеством языка SGML.

Целью создания XML было обеспечение совместимости при передаче структурированных данных между разными системами обработки информации, особенно при передаче таких данных через Интернет. Словари, основанные на XML (например, RDF, RSS, MathML, XHTML, SVG), сами по себе формально описаны, что позволяет программно изменять и проверять документы на основе этих словарей, не зная их семантики, то есть не зная смыслового значения элементов. Важной особенностью XML также является применение так называемых пространств имён (namespace).

Правильно построенный (Well-formed). Правильно построенный документ соответствует всем общим правилам синтаксиса XML, применимым к любому XML-документу.

Действительный (Valid). Действительный документ дополнительно соответствует некоторым семантическим правилам. Это более строгая дополнительная проверка корректности документа на соответствие заранее определённым, но уже внешним правилам, в целях минимизации количества ошибок, например, структуры и состава данного, конкретного документа или семейства документов.

XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое. Элемент обычно состоит из открывающего и закрывающего тегов, обрамляющих текст и другие элементы. Открывающий тег состоит из имени элемента в угловых скобках, например, «<step>»; закрывающий тег состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта, например, «</step>». Содержимым элемента называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы.

Кроме содержания у элемента могут быть атрибуты — пары имя-значение, добавляемые в открывающий тег после названия элемента. Значения атрибутов всегда заключаются в кавычки (одинарные или двойные).

Каждый XML-документ должен содержать в точности один корневой элемент. В отличие от HTML, теги в XML чувствительны к регистру.

XML элементы должны именоваться в соответствии со следующими правилами:

Имена могут состоять из букв цифр и других символов

Имена не могут начинаться с цифры или знака препинания

Имена не должны начинаться со последовательности xml (или XML, или Xml и т. д.)

Имена не могут содержать пробелов

 


<?xml version=«1.0» encoding=«Windows-1251»?>
<note>
<to>Сергей</to>
<from>Наталья</from>
<heading>Напоминание</heading>
<body>Не забудь про наши планы на эти выходные!</body>
</note>

 

<root

xmlns:h=«www.w3.org/TR/html4/»

xmlns:f=«www.w3schools.com/furniture»>

 

<h:table>

<h:tr>

<h:td>Apples</h:td>

<h:td>Bananas</h:td>

</h:tr>

</h:table>

 

<f:table>

<f:name>African Coffee Table</f:name>

<f:width>80</f:width>

<f:length>120</f:length>

</f:table>

 

</root>



XSL. Основные понятия и конструкции языка. XSLT преобразование

www.citforum.ru/internet/xmlxslt/xmlxslt.shtml

en.wikipedia.org/wiki/XSLT_elements

en.wikipedia.org/wiki/XSLT

 

При применении таблицы стилей XSLT, состоящей из набора шаблонов, к XML-документу (исходное дерево) образуется конечное дерево, которое может быть другой XML-структурой, HTML-документом или обычным текстом. Правила выбора (и, отчасти, преобразования) данных из исходного дерева пишутся на языке запросов XPath.

XSLT имеет множество различных применений, в основном в области web-программирования и генерации отчётов. Одной из задач, решаемых языком XSLT, является отделение данных от их представления, как часть общей парадигмы MVC (англ. Model-view-controller). Другой стандартной задачей является преобразование XML-документов из одной XML-схемы в другую.

Консорциум W3 определяет три составные части языка XSL (eXtensible Stylesheet Language — Расширяемый Язык Стилей): XSLT, XPath (язык путей и выражений, используемый в XSLT для доступа к отдельным частям XML-документа) и XSL-FO (eXtensible Markup Language Formatting Objects — язык разметки типографских макетов и иных предпечатных материалов.

 

еще рефераты
Еще работы по информатике