class JobConfigurationForRunningConcurrentStepsWithVirtualThreads {

	@Bean
	public ItemReader<Integer> itemReader() {
		return new ListItemReader<>(Arrays.asList(1, 2, 3, 4, 5, 6)) {
			final Lock lock = new ReentrantLock();

			@Override
			public Integer read() {
				this.lock.lock();
				try {
					Integer item = super.read();
					System.out.println(Thread.currentThread() + ": reading item " + item);
					return item;
				}
				finally {
					this.lock.unlock();
				}
			}
		};
	}

	@Bean
	public ItemWriter<Integer> itemWriter() {
		return items -> {
			for (Integer item : items) {
				System.out.println(Thread.currentThread() + ": writing item " + item);
			}
		};
	}

	@Bean
	public Job job(JobRepository jobRepository, JdbcTransactionManager transactionManager,
			ItemReader<Integer> itemReader, ItemWriter<Integer> itemWriter) {<FILL_FUNCTION_BODY>}

}

		Step step = new StepBuilder("step", jobRepository).<Integer, Integer>chunk(2, transactionManager)
			.reader(itemReader)
			.writer(itemWriter)
			.taskExecutor(new VirtualThreadTaskExecutor("spring-batch-"))
			.build();
		return new JobBuilder("job", jobRepository).start(step).build();
	
<no_super_class>