进程和线程的区别:
- 进程:一个执行程序的一个执行过程,是动态的,是系统资源分配的单位。而程序是指令和数据的有序集合,是静态的
- 线程:是一个执行过程中的一个执行序列,一个线程中有多个线程。线程是CPU调度和执行的单位
线程创建的三种方式:
public class Test02 {
public static void main(String[] args) {
myTheat1 t1 = new myTheat1();
t1.start();
myTheat2 t2 = new myTheat2();
t2.start();
for (int i=0;i<300;i++){
System.out.println("主线程------>正在执行");
}
}
}
class myTheat1 extends Thread{
@Override
public void run() {
for (int i=0;i<300;i++){
System.out.println("线程1------>正在执行");
}
}
}
class myTheat2 extends Thread{
@Override
public void run() {
for (int i=0;i<300;i++){
System.out.println("线程2------>正在执行");
}
}
}
public class Test06 {
public static void main(String[] args) {
myThead1 myThead1 = new myThead1();
Thread thread = new Thread(myThead1);
thread.start();
}
}
class myThead1 implements Runnable{
@Override
public void run() {
for (int i=0;i<300;i++){
System.out.println("分线程------>正在执行"+"优先级:"+Thread.currentThread().getPriority());
}
}
}
- 实现Callable接口,需要返回值类型
- 重写call方法,需要抛出异常
- 创建目标对象
- 创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1);
- 提交执行:Future result1 = ser.submit(t1);
- 获取结果:boolean r1 = result1.get()
- 关闭服务:ser.shutdownNow()
public class Test02 {
public static void main(String[] args) {
FutureTask<Integer> futureTask = new FutureTask<Integer>(new MyThead2());
new Thread(futureTask).start();
}
}
class MyThead2 implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.out.println("Mythead3");
return 100;
}
}