> curl -s get.gvmtool.net | bash
・コマンドがインストールできているかを確認
gvm version
・下記コマンドで最新のgradleがインストールされます
> gvm install gradle
・もし、gradleのバージョンを変えたいなら
> gvm list gradle
// 表示されたバージョンを確認して
> gvm install gradle {インストールしたいバージョン}
> curl -s get.gvmtool.net | bash
gvm version
> gvm install gradle
> gvm list gradle
// 表示されたバージョンを確認して
> gvm install gradle {インストールしたいバージョン}
package lambda1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.UnaryOperator;
public class Main {
private static final List list = Arrays.asList("a", "b", "c", "d",
"e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q",
"r", "s", "t", "u", "v", "w", "x", "y", "z");
public static void main(final String[] args) {
Main m = new Main();
m.go1();
m.go2();
m.go3();
m.go4();
}
/**
* Java8以前の記述方法。
* この記述を徐々に簡略化していきます。
*/
public void go1() {
System.out.println("go1");
final List l = new ArrayList(list);
System.out.println(l.toString());
l.replaceAll(new UnaryOperator() {
@Override
public String apply(String str) {
return "==" + str;
}
});
System.out.println(l.toString());
}
/**
* replaceAllの引数のUnaryOperatorインタフェースは
* @FunctionalInterfaceのアノテーションが付いているので、
* ラムダ式で記述を置き換えられる。
*/
public void go2() {
System.out.println("go2");
final List l = new ArrayList(list);
System.out.println(l.toString());
l.replaceAll((String t) -> {
return "==" + t;
});
System.out.println(l.toString());
}
/**
* 処理が1行の場合は{}で囲う必要がないので削除。
* さらにreturnも1行の場合は削除できるので削除。
*/
public void go3() {
System.out.println("go3");
final List l = new ArrayList(list);
System.out.println(l.toString());
l.replaceAll((String t) -> "==" + t);
System.out.println(l.toString());
}
/**
* 型は推論してくれるし、かつ引数が1個なのでカッコも不要。
*/
public void go4() {
System.out.println("go4");
final List l = new ArrayList(list);
System.out.println(l.toString());
l.replaceAll(t -> "==" + t);
System.out.println(l.toString());
}
}
package sample.thread.basic;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class SampleMain {
public static void main(final String[] args) {
new SampleMain().go();
}
public void go() {
System.out.println("処理開始");
final BlockingQueue<Runnable%gt; queue = new LinkedBlockingQueue]<Runnable>();
// queueに事前に積んでおくこともできる
for (int i = 0; i < 50; i++) {
queue.add(new TestRunnable());
}
final ThreadPoolExecutor tpe = new ThreadPoolExecutor(3, 3, 500, TimeUnit.MILLISECONDS, queue, new ThreadPoolExecutor.CallerRunsPolicy());
try {
// shutdown()を呼ぶ前であれば、タスクを後から追加することもできる
for (int i = 0; i < 50; i++) {
tpe.execute(new TestRunnable());
}
} finally {
// 必ずshutdownを実行する。実行しないとスレッドが開放されないので処理が一生
System.out.println("ShutDown実行。");
tpe.shutdown();
}
while (true) {
if (tpe.isTerminated()) {
break;
}
try {
System.out.println("タスク終了待ち 1000ms.");
Thread.currentThread();
Thread.sleep(1000);
} catch (InterruptedException ignore) {
}
}
System.out.println("処理終了");
}
/**
* スレッド実行されるタスク。
*/
private static class TestRunnable implements Runnable {
private static volatile int count = 0;
@Override
public void run() {
System.out.println(count++);
}
}
}