import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicIntegerArray;
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
/**
- JAVA5以后增加 线程并发库
- @author guoyajie
*/
public class Test8 {
//线程安全的整型数组
AtomicIntegerArray arry;
//线程安全对象中的整数操作
AtomicIntegerFieldUpdater<Object> g;
public static void main(String[] args) {
//线程安全的整型
AtomicInteger ii = new AtomicInteger(0);
}
}
java线程池
package com.gyj.student;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
/**
- 线程池
- @author guoyajie
*/
public class Test9 {
public static void main(String[] args) {
// 创建固定线程池
// ExecutorService threadPool = Executors.newFixedThreadPool(3);
//创建不固定线程池
// ExecutorService threadPool = Executors.newCachedThreadPool();
//单线程 如何线程死后重新启动
ExecutorService threadPool = Executors.newSingleThreadExecutor();
for(int i=0;i<10;i++){
final int tast = i;
threadPool.execute(new Runnable() {
@Override
public void run() {
for (int j = 0; j < 10;j++) {
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()
+ " loop of " + j + " of tast" + tast);
}
}
});
}
System.out.println("10个任务提交,只有3个任务,服务不死");
// threadPool.shutdown();
//定时线程池
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println(“bombing!”);
}
}, 10,2, TimeUnit.SECONDS);
}
}