concurrent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>com.jsunsoft.util</groupId>
<artifactId>concurrent</artifactId>
<version>2.2.0</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jsunsoft.util</groupId>
<artifactId>concurrent</artifactId>
<version>2.2.0</version>
<packaging>jar</packaging>
<name>concurrent</name>
<description>Lightweight Java utility that simplifies working with striped locks based on Google Guava's Striped.
Provides a small, expressive API (ResourceLock) to synchronize execution by a resource key (single or multiple),
with optional timeouts and interruptible variants. Best-effort parallelism via striping; deadlock-safe multi-key
acquisition.
</description>
<url>https://github.com/jsunsoftware/concurrent</url>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<name>Benik Arakelyan</name>
<email>beno.arakelyan@gmail.com</email>
<roles>
<role>architect</role>
<role>developer</role>
</roles>
</developer>
</developers>
<properties>
<maven-deploy-plugin.version>3.1.4</maven-deploy-plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>5.14.4</junit.version>
<guava.version>33.6.0-jre</guava.version>
<slf4j.version>2.0.18</slf4j.version>
<jmh.version>1.37</jmh.version>
</properties>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.9.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.15.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<compilerArgs>
<arg>-Xlint:all</arg>
<arg>-parameters</arg>
</compilerArgs>
<!-- JMH's annotation processor is configured INSIDE the `benchmark` profile only.
Default builds don't need it — the @Benchmark/@State annotations in the benchmark
source compile as regular Java annotations, and the JMH-generated stub classes are
only required at benchmark-runtime (which is gated by the same profile). Keeping
the processor out of the default build avoids the "No processor claimed any of
these annotations" javac warnings on every other source file. -->
</configuration>
</plugin>
<!-- Default test run excludes @Tag("benchmark") tests. To run them, use the `benchmark`
profile (defined below): `mvn test -Pbenchmark`. Warmup + measurement takes minutes;
not for CI. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.5</version>
<configuration>
<excludedGroups>benchmark</excludedGroups>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.4.0</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.12.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.8</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- JMH — only on test classpath. Benchmarks live under
src/test/java/.../benchmark/ and run via the BenchmarkRunnerTest
(tagged "benchmark", excluded from default `mvn test`). -->
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<scm>
<connection>scm:git:https://github.com/jsunsoftware/concurrent.git</connection>
<developerConnection>scm:git:https://github.com/jsunsoftware/concurrent.git</developerConnection>
<url>https://github.com/jsunsoftware/concurrent.git</url>
</scm>
<profiles>
<!-- Run JMH benchmarks.
mvn clean test -Pbenchmark # all benchmarks, modest defaults
mvn clean test -Pbenchmark -Dtest=BenchmarkRunnerTest
`mvn clean` is recommended when activating this profile: the JMH annotation processor
is only configured inside this profile, so a switch from default to benchmark needs a
fresh compile to materialise the generated stub classes that JMH Runner looks for.
Warmup + measurement takes minutes; intentionally not part of default `mvn test`. -->
<profile>
<id>benchmark</id>
<build>
<plugins>
<!-- Attach the JMH annotation processor only when this profile is active, and only
to the TEST compile execution (the benchmark sources live under src/test/java).
Keeping the processor out of the main compile avoids "No processor claimed any
of these annotations" warnings on @ThreadSafe / @FunctionalInterface in the
library source. The test-compile execution is where the JMH stubs get generated. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>default-testCompile</id>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludedGroups combine.self="override"/>
<groups>benchmark</groups>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>