LeetCode:0-100の奇数と偶数をそれぞれ印刷する2つのスレッドを開きます
2468 ワード
匿名の内部クラスを使用して実装されるプロセス:
他の人のブログを見ると、スレッドの実行回数を記録する効率的な実現方法があります.
この効率はきっと上の効率より高いに違いない.1回に0-100の遍歴しか行わないからです.奇数と偶数を印刷します.このアルゴリズムは0-100を2回巡回する必要があります.中の奇数と偶数をそれぞれ取り出します.
ソースgithubアドレス:https://github.com/zhangyu345293721/leetcode
package TestThread1;
/**
* :
*
* @author:
* @date: : 2018 7 10 : 9:43:16
* @version 1.0
*/
public class ThreadDemo {
static Object obj=new Object();
public static void main(String[] args) {
new Thread() {
int x = 0;
public void run() {
while (x <= 100) {
synchronized (obj) {
if (x % 2 == 0) {
System.out.println(Thread.currentThread().getName()+ "--" + (x));
}else{
obj.notifyAll();
try {
obj.wait(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
x++;
}
}
}
}.start();
new Thread() {
int x = 0;
public void run() {
while (x <=100) {
synchronized (obj) {
if (x % 2 == 1){
System.out.println(Thread.currentThread().getName()+ "--" + x);
}else{
obj.notifyAll();
try {
obj.wait(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
x++;
}
}
}
}.start();
}
}
他の人のブログを見ると、スレッドの実行回数を記録する効率的な実現方法があります.
package TestThread1;
import java.util.concurrent.atomic.AtomicInteger;
/**
* : 0-100 ,
* @author:
* @date: : 2018 8 26 : 10:31:02
* @version 1.0
*/
public class ThreadDemo3 {
private static volatile boolean flag = true;
private static AtomicInteger num = new AtomicInteger();
public static void main(String []args){
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
while (num.get() <= 100) {
if (!flag) {
System.out.println(Thread.currentThread().getName()+ num.getAndIncrement());
flag = true;
}
}
}
});
t1.setName(" :");
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
while (num.get() <= 100) {
if (flag) {
System.out.println(Thread.currentThread().getName()+ num.getAndIncrement());
flag = false;
}
}
}
});
t2.setName(" :");
t1.start();
t2.start();
}
}
この効率はきっと上の効率より高いに違いない.1回に0-100の遍歴しか行わないからです.奇数と偶数を印刷します.このアルゴリズムは0-100を2回巡回する必要があります.中の奇数と偶数をそれぞれ取り出します.
ソースgithubアドレス:https://github.com/zhangyu345293721/leetcode