程序(program)是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。是静态的代码。
它以某些程序设计语言编写,运行于某种目标结构体系上。
进程(process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是 *** 作系统结构的基础。
程序是指令、数据及其组织形式的描述,进程是程序的实体。
线程(thread)是 *** 作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
线程共享同一个进程中的结构。
//通过继承Thread实现多线程
class ThreadTest1 extends Thread {
public ThreadTest1() {
}
//重写run方法
@Override
public void run() {
System.out.println(getName() + "被调用。");
}
}
public class Thread1 {
public static void main(String[] args) {
ThreadTest1 threadTest1 = new ThreadTest1();
ThreadTest1 threadTest2 = new ThreadTest1();
ThreadTest1 threadTest3 = new ThreadTest1();
threadTest1.setName("线程一");
threadTest2.setName("线程二");
threadTest3.setName("线程三");
threadTest1.start();
threadTest2.start();
threadTest3.start();
}
}
实现Runnable接口
//通过实现Runnable接口实现多线程
class ThreadTest2 implements Runnable {
//重写run方法
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "被调用。");
}
}
public class Thread2 {
public static void main(String[] args) {
ThreadTest2 threadTest = new ThreadTest2();
Thread thread1 = new Thread(threadTest);
Thread thread2 = new Thread(threadTest);
Thread thread3 = new Thread(threadTest);
thread1.setName("线程一");
thread2.setName("线程二");
thread3.setName("线程三");
thread1.start();
thread2.start();
thread3.start();
}
}
实现Callable接口
class ThreadTest3 implements Callable {
//重写call方法
public ThreadTest3() {
}
@Override
public Object call() throws Exception {
return Thread.currentThread().getName() + "被调用。";
}
}
public class Thread3 {
public static void main(String[] args) {
ThreadTest3 thread1 = new ThreadTest3();
FutureTask futureTask = new FutureTask(thread1);
new Thread(futureTask).start();
String str;
{
try {
str = (String) futureTask.get();
} catch (InterruptedException e) {
throw new RuntimeException(e);
} catch (ExecutionException e) {
throw new RuntimeException(e);
}
}
System.out.println(str);
}
}
使用线程池
class ThreadTest4 implements Runnable {
//重写run方法
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "被调用。");
}
}
public class Thread4 {
public static void main(String[] args) {
ExecutorService service = Executors.newFixedThreadPool(10);
// ThreadPoolExecutor service1 = (ThreadPoolExecutor) service;
service.execute(new ThreadTest4());
service.execute(new ThreadTest4());
service.shutdown();
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)