В Java 8:
String[] strings = Arrays.stream(objects).toArray(String[]::new);
Для преобразования массива других типов:
String[] strings = Arrays.stream(obj).map(Object::toString).
toArray(String[]::new);
Если вы действительно только начинаете, то, вероятно, проблема производителя-потребителя - это хороший способ начать:
http://en.wikipedia.org/wiki/Producer-consumer_problem
Не читайте слишком много, потому что статья в Википедии также содержит решение проблемы: -)
попробуйте преобразователь судоку с различными стратегиями:
Если вы немного опытный программист, вам может быть интересно создать небольшой сервер для назначения цен на акции, который использует протокол исправления . Это должно было бы быть в состоянии справиться с несколькими клиентами (а затем вы научитесь Swing или некоторым веб-технологиям), что требует параллелизма.
Если вы новичок, я предлагаю что-то более простое, например, поток производителя с парой потребительских потоков. и вы получите дополнительные баллы, если сможете графически показать процесс.
Я настоятельно рекомендую книгу Java Concurrency In Practice в качестве ресурса, пока вы работаете над любым выбранным вами проектом.
Это не полный проект, но он также содержит некоторые исходные коды. Я думаю, что было бы здорово получить хорошее представление о многопоточности.
A common learning project for concurrency and networking is to write a chat program. It is similar to the FIX server suggestion but you just pass text around.
Когда я читаю параллельные системы программируя в университете, мы создали систему видеонаблюдения - один главный ПК, который загружал видеоданные с одного или нескольких подчиненных компьютеров с веб-камер. Я помню этот проект, так как он действительно заставил вас заняться как эффективным сетевым программированием, так и проблемами в реальном времени и JNI:)
Написать алгоритм умножения матриц. Распараллелить это. Оптимизируй это. Посмотрите, как оно масштабируется, особенно если у вас многоядерный компьютер. Это был бы веселый проект.