マルチスレッドの実装(継承された父親のクラスとインタフェースを実装)3
- run()メソッドをオーバーライドし、親Threadクラスを継承
[実装]
class MyThreadEx extends Thread{
private String title;
MyThreadEx(String title){
this.title = title;
}
@Override
public void run() {
for (int i = 0;i < 10;i++){
System.out.println(currentThread().getName()+"--"+title+":"+i);
}
}
}
[呼び出し]
MyThreadEx thread = new MyThreadEx("A");
thread.start();
- )インターフェイスメソッドの実行を(実装(Runnableを)インタフェースを実装
【実現】
class MyThread implements Runnable{
private int i = 0;
@Override
public void run() {
for (;i < 10;i++)
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
[呼び出し]
MyThread runthread = new MyThread();
new Thread(runthread,"A").start();
- インターフェース(1.5後JUC、戻り値)(呼び出し可能)インタフェースメソッド呼び出しを(実装)を実装
呼び出し可能な原理:
【リアライズ】
class MyCallThread implements Callable{
private int i = 0;
@Override
public Object call() throws Exception {
for (; i < 10; i++){
System.out.println(Thread.currentThread() + "-callable:"+ i);
}
return "callable";
}
}
[呼び出し]
FutureTask<String> task = new FutureTask<>(new MyCallThread());
new Thread(task).start();
System.out.println(task.get());
java1.5のjava.util.concurrentの後(同時:同時)
原子:原子、のAtomicInteger:アトミック参照
1.volatile Java仮想マシンが提供する軽量の同期メカニズム
特性は:
(1)視認性を確保
(2)原子性を保証しない
(3)禁止命令再配置
- 複数のスレッドでシンプルな関心の故障モード(Singletonパターンを達成するための二つの方法:怠惰と空腹男性)、DCL(ダブルチェックロック)
public class Singleton{
private static volatitle Singleton instance = null; //volatitle轻量级线程同步机制
private Singleton(){
}
public static Singleton getInstance(){ //方法加synchronized,效率低
if(instance == null){
synchronized(Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
}
}
2.JMM:(Javaのメモリモデル)のjavaメモリモデル、抽象化、本物ではありません
JMM同期の要件:
(1)ねじロック解除値が戻ってメインメモリへのリフレッシュを共有する必要があります前に
(2)のスレッドをロックする前に、彼らのワーキングメモリにメインメモリの最新の値を読まなければならない
(3)ロック解除をロックすることと同じですロック