Multithread Safety

The most obvious problem with the interface defined in CODE EXAMPLE 2-3is that it is not thread-safe. A single Java platform thread (Java thread) calling the APIs can certainly use it effectively, but if another thread attempts to use the API, things almost certainly break. For example, one thread might call setTime(). Another thread might be scheduled and issue a call to setTime() with a different value. When the first thread calls cook(), the cook time used is actually the cook time set by the second thread. When the second thread calls cook(), the cooking operation initiated by the first thread might still be going on, which gives rise to an error.

A reasonable way to make this interface thread safe is to introduce mutual exclusion, so that one thread can be assured that no other threads are interfering with its operation. This ensures that intermediate state (such as cook time) is not altered between the setup calls and the cook() call. It also ensures that only one cook() operation can be processed at once, a restriction imposed by the underlying native API.

Because exclusion is required around multiple calls to this interface, making the methods synchronized is insufficient. Therefore, introduce a lock() and unlock() protocol that clients are required to use around their calls to other methods. Each native method is wrapped with a Java method that checks for the proper lock state before proceeding to call the native method.

CODE EXAMPLE 2-4Introducing a Locking Mechanism for Thread Safety

public class Microwave {

private static boolean initialized = false; private static Thread owner = null;

public static synchronized void lock() throws InterruptedException {

while (owner != null) { wait();

}

owner = Thread.currentThread();

if (!initialized) { init(); initialized = true;

}

}

public static synchronized unlock() { owner = null;

notifyAll();

}

Chapter 2 Multitasking Safety 11

Page 23
Image 23
Sun Microsystems 2 manual Multithread Safety

2 specifications

Sun Microsystems, founded in 1982, was a significant player in the computing industry, best known for its innovative technology solutions and workstations, particularly the Sun-4, which represented a key milestone in the company's history. The Sun-4 architecture, launched in 1987, utilized the SPARC (Scalable Processor Architecture) RISC processor, notable for its high performance and scalability.

One of the primary features of Sun Microsystems' platforms was their ability to efficiently handle multitasking and resource management, making them ideal for enterprise-level applications and development environments. Sun-4 workstations boasted impressive graphics capabilities with the addition of advanced graphical user interfaces, support for color displays, and the SUNVIEW windowing system, which enhanced user experience and productivity.

The Sun-4 systems also supported the SunOS operating system, which was based on UNIX. This operating system was engineered for stability and robustness, offering features like multiuser support, networked environments, and advanced security options. Moreover, SunOS provided seamless integration with various programming languages, including C and C++, facilitating software development that aligned with industry standards.

Another standout characteristic of Sun Microsystems was its commitment to open systems and standards. By providing developers with comprehensive tools and environments, such as the Standardized Application Programming Interface (API) and support for networking protocols, Sun facilitated interoperability among different computing platforms. The emphasis on open architecture also meant that customers could easily upgrade their systems without being locked into proprietary solutions.

Sun Microsystems was also ahead of its time with innovations in network computing. Their workstations were among the first to support network file systems and distributed computing concepts, enabling seamless data sharing across multiple systems. With the introduction of the Network File System (NFS), Sun revolutionized how data was accessed and managed across networks, which played a significant role in the evolving landscape of client-server computing.

In summary, the Sun Microsystems 2 and its successive innovations in workstation technology highlighted the company's forward-thinking approach. By integrating powerful performance with open systems, robust operating systems, and advanced networking capabilities, Sun laid the groundwork for modern computing, influencing various sectors from academia to enterprise solutions. Even after its acquisition by Oracle in 2010, the legacy of Sun Microsystems continues to be felt across the computing industry.