Introducing concurrent execution, forking, joining, synchronization, and load balancing of java threads to trainees allows them to (a) create arbitrary concurrent algorithms, and (b) be exposed to the underpinnings of...
详细信息
ISBN:
(纸本)9798350383782;9798350383799
Introducing concurrent execution, forking, joining, synchronization, and load balancing of java threads to trainees allows them to (a) create arbitrary concurrent algorithms, and (b) be exposed to the underpinnings of concurrency concepts. However, it requires the sacrifice of some existing concepts in the course in which such training is added. To keep this sacrifice low, we ambitiously explored if such concepts can be effectively introduced and tested in a single class period, which is approximately an hour, without a live lecture. Students were asked to learn the concurrency concepts by reading, running, fixing, and testing an existing concurrent program, and taking a quiz. They had varying knowledge of concurrency and java threads but had not implemented concurrent java programs. Both in-person and remote help were offered. They were allowed to finish their work after class, within a week. The vast majority of them who started on time finished the coding correctly and gave satisfactory quiz answers in ninety minutes. This experience suggests that such hands-on training can be usefully added to courses for training students and instructors that provide no other training in concurrency or training in declarative concepts. Our key ideas can be applied to languages other than java.
Key classes are considered the most important classes of a software system. They represent the starting point for reengineering or documentation processes. The detection of key classes is considered crucial in the sta...
详细信息
ISBN:
(纸本)9798350329537;9798350329520
Key classes are considered the most important classes of a software system. They represent the starting point for reengineering or documentation processes. The detection of key classes is considered crucial in the state of the art, many studies are focused on automatic detection based on class graph system representation. Studies show that class attributes computed with algorithms like Hyperlink-Introduced Topic Search (HITS) and PageRank (PR) give the best precision and recall performance values in detecting key classes. The runtime execution of the two algorithms is critical when they run on graphs having different class relationship weights. To ameliorate the time execution problem we experiment with the two algorithm parallel implementations based on java: i) single thread, ii) platform or operating system threads and iii) virtual threads. The experiments are fulfilled on a set of 14 java projects. The results show that single thread implementations for project having a relative small number of classes, namely under 1,200, perform better than platform threads implementations. Conversely, virtual threads perform better than any single thread implementation. We conclude that virtual thread model speeds up the computation of attributes with a runtime decrease of 58.41% against the single thread model.
Two features distinguish java from other mainstream programming languages like C and C++: its builtin support for concurrency and safety guarantees such as type safety or safe execution in a sandbox. In this work, we ...
详细信息
Two features distinguish java from other mainstream programming languages like C and C++: its builtin support for concurrency and safety guarantees such as type safety or safe execution in a sandbox. In this work, we build a formal, unifiedmodel of java concurrency, validate it empirically, and analyse it with respect to the safety guarantees using a proof assistant. We show that type safety and java's data race freedom guarantee hold. Our analysis, however, revealed a weakness in the java security architecture, because the java memory model theoretically allows pointer forgery. As a result, this work clarifies the specification of the java memory model.
Despite the portability and platform independence of java programs, their performance depends on the threading mechanisms of the host operating system. In this paper, we measure the performance of java threads for two...
详细信息
Despite the portability and platform independence of java programs, their performance depends on the threading mechanisms of the host operating system. In this paper, we measure the performance of java threads for two different multi-threading implementations, Linux Thread and Green Thread, using Personaljava (TM) on a Linux-based platform. The experimental results show the relative strengths and weaknesses of the two threading mechanisms with respect to synchronization overhead, I/O efficiency, and thread control. (C) 2002 Elsevier Science B.V. All rights reserved.
This paper analyzes the overheads incurred in the exploitation of loop-level parallelism using java threads and proposes some code transformations that minimize them. The transformations avoid the intensive use of Jav...
详细信息
This paper analyzes the overheads incurred in the exploitation of loop-level parallelism using java threads and proposes some code transformations that minimize them. The transformations avoid the intensive use of java threads and reduce the number of classes used to specify the parallelism in the application (which reduces the time for class loading). The use of such transformations results in promising performance gains that may encourage the use of java for exploiting loop-level parallelism in the framework of OpenMP, On average, the execution time for our synthetic benchmarks is reduced by 50% from the simplest transformation when eight threads are used. The paper explores some possible enhancements to the java threading API oriented towards improving the application-runtime interaction. Copyright (C) 2001 John Wiley & Sons, Ltd.
Jalapeno is a virtual machine for java(TM) servers written in the java language. To be able to address the requirements of servers (performance and scalability in particular), Jalapeno was designed "from scratch&...
详细信息
Jalapeno is a virtual machine for java(TM) servers written in the java language. To be able to address the requirements of servers (performance and scalability in particular), Jalapeno was designed "from scratch" to be as self-sufficient as possible. Jalapeno's unique object model and memory layout allows a hardware null-pointer check as well as fast access to array elements, fields, and methods. Run-time services conventionally provided in native code are implemented primarily in java. java threads are multiplexed by virtual processors (implemented as operating system threads). A family of concurrent object allocators and parallel type-accurate garbage collectors is supported. Jalapeno's interoperable compilers enable quasi-preemptive thread switching and precise location of object references. Jalapeno's dynamic optimizing compiler is designed to obtain high quality code for methods that are observed to be frequently executed or computationally intensive.
暂无评论