something
- volatile
- synchronized
1. implements Runnable
/**调用*/
TestRunnable tt= new TestRunnable ();//create TestThread class
Thread t= new Thread(tt);// create a Thread class
t.start(); //enable Runnable states
class TestRunnable implements Runnable{
@Override
public void run(){
System.out.println(Thread.currentThread().getName() +" is running");
}
}
2. extends Thread
/**调用*/
new TestThread().start();
class TestThread extends Thread {
@Override
public void run() {
System.out.println(" TestThread1 is running");
}
}
3. ThreadGroup 线程组
类似 数组
- 创建线程组
// 创建线程组
ThreadGroup threadGroup = new ThreadGroup("Searcher");
Result result=new Result();
TestRunnable testRunnable =new TestRunnable ();
// 创建一个任务,10个线程完成
for (int i=0; i<10; i++) {
Thread thread=new Thread(threadGroup, testRunnable );
thread.start();
}
- ThreadGroup 一些操作
// 查看线程组消息
System.out.printf("active 线程数量: %d\n",threadGroup.activeCount());
System.out.printf("线程组信息明细\n");
threadGroup.list();
System.out.println("========华丽丽1=======");
// 遍历线程组
Thread[] threads=new Thread[threadGroup.activeCount()];
threadGroup.enumerate(threads);
for (int i=0; i<threadGroup.activeCount(); i++) {
System.out.printf("Thread %s: %s\n",threads[i].getName(),threads[i].getState());
}
System.out.println("========华丽丽2=======");
// 当前线程名称
String name=Thread.currentThread().getName();
4. Callable<?>
-
特点:有返回值
-
调用
// todo
线程类
public class SumTask implements Callable<Integer> {
//定义每个线程计算的区间
private int startNumber;
private int endNumber;
public SumTask(int startNumber, int endNumber){
this.startNumber=startNumber;
this.endNumber=endNumber;
}
@Override
public Integer call() throws Exception {
int sum = 0;
for(int i=startNumber; i<=endNumber; i++) {
sum = sum + i;
}
Thread.sleep(new Random().nextInt(1000));
System.out.printf("%s: %d\n",Thread.currentThread().getName(),sum);
return sum;
}
}