java多线程入门知识及示例程序
程序员文章站
2024-02-13 09:38:46
为什么需要多线程?模型的简化,如某些程序是由多个相对独立任务的运行:
图形界面的出现,输入、输出的阻塞
多核cpu的更好利用
异步行为的需要
java多线程的特性:...
为什么需要多线程?
模型的简化,如某些程序是由多个相对独立任务的运行:
图形界面的出现,输入、输出的阻塞
多核cpu的更好利用
异步行为的需要
java多线程的特性:
程序的入口main本身是一个线程
线程是并发的,无序执行的
线程内部是顺序执行的
共享数据
java多线程的风险:
安全风险:由于线程的操作顺序是不确定的,某些在单线程下能运行的程序到多线程下会出现意外的结果。
性能风险:服务器的吞吐量、响应性、资源消耗
java多线程api:
java可以通过两种形式创建线程:一、实现runnable接口,二、继承thread类。
继承thread创建线程示例代码
复制代码 代码如下:
public class threadtest extends thread {
public static void main(string[] args) {
threadtest thread = new threadtest();
thread.start();
for (int i=0; i<10; i++) {
system.out.println("main:"+i);
}
}
@override
public void run() {
for (int i=0; i<10; i++) {
system.out.println("thread:"+i);
}
}
}
实现runnable创建线程代码
复制代码 代码如下:
package com.openrdp.thread.api;
public class runnabletest implements runnable {
public static void main(string[] args) {
runnabletest runnable = new runnabletest();
thread thread = new thread(runnable);
thread.start();
for (int i=0; i<10; i++) {
system.out.println("main:"+i);
}
}
@override
public void run() {
for (int i=0; i<10; i++) {
system.out.println("thread:"+i);
}
}
}
java线程池技术
executors获取exceuctorservice线程池代码
复制代码 代码如下:
package com.openrdp.thread.api;
import java.util.concurrent.executorservice;
import java.util.concurrent.executors;
public class treadpooltest {
public static void main(string[] args) {
executorservice threadpool = executors.newfixedthreadpool(99);
taskthread thread1 = new taskthread("t1");
threadpool.execute(thread1);
taskthread thread2 = new taskthread("t2");
threadpool.execute(thread2);
}
static class taskthread implements runnable {
string param;
public taskthread(string param) {
this.param = param;
}
@override
public void run() {
}
}
}