为什么需要多线程?
. 模型的简化,如某些程序是由多个相对独立任务的运行:
. 图形界面的出现,输入、输出的阻塞
. 多核CPU的更好利用
. 异步行为的需要
Java多线程的特性:
. 程序的入口main本身是一个线程
. 线程是并发的,无序执行的
. 线程内部是顺序执行的
. 共享数据
Java多线程的风险:
. 安全风险:由于线程的操作顺序是不确定的,某些在单线程下能运行的程序到多线程下会出现意外的结果。
. 性能风险:服务器的吞吐量、响应性、资源消耗
Java多线程API:
Java可以通过两种形式创建线程:一、实现Runnable接口,二、继承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);
}
}
}
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线程池技术:
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() {
}
}
}
分享到:
相关推荐
### Java线程入门知识点详解 #### 一、Java线程基础知识概述 **1.1 什么是线程?** 线程是程序执行流的最小单元,是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。在Java中...
以下是对Java线程入门的详细讲解: 1. **线程的基本概念**: - 线程是操作系统分配CPU时间的基本单元,一个进程可以包含一个或多个线程。 - 在Java中,每个应用程序至少有一个主线程,它负责启动和控制其他线程。...
本文将基于提供的"Java线程入门"资料,深入探讨Java线程编程的基本概念、创建方法以及常见操作,帮助初学者建立起扎实的线程知识体系。 一、线程基础 1. 线程定义:线程是操作系统分配CPU时间的基本单元,一个进程...
1. Java多线程学习(一)Java多线程入门 2. Java多线程学习(二)synchronized关键字(1) 3. Java多线程学习(二)synchronized关键字(2) 4. Java多线程学习(三)volatile关键字 5. Java多线程学习(四)...
8. **多线程**:Java内置了对多线程的支持,通过Thread类或Runnable接口创建和管理线程,实现并发执行。 9. **泛型**:自Java 5引入泛型后,可以为集合和其他容器指定元素类型,提高了类型安全性和代码可读性。 10...
- Java线程有10个优先级,从Thread.MIN_PRIORITY(1)到Thread.MAX_PRIORITY(10),默认优先级是Thread.NORM_PRIORITY(5)。优先级高的线程可能更有可能获得CPU时间,但不保证。 6. **线程池** - Java提供...
本书《Java线程入门》显然为初学者提供了一个良好的起点,适合对编程有一定了解的人群。书中可能涵盖了以下几个核心知识点: 1. **线程的概念与分类**:介绍什么是线程,线程如何在操作系统中运行,以及Java中线程...
Java线程入门,学习Java线程的好帮手
Java基础入门教程 Java编程技术08 线程(2学时)(共15页).ppt Java基础入门教程 Java编程技术09 Swing UI编程(6学时)(共80页).ppt Java基础入门教程 Java编程技术10 集合框架(略)(共48页).ppt Java基础入门教程 ...
Java全套入门培训课件 Java基础 02-Java基础语法1(共35页).pptx Java全套入门培训课件 Java基础 02-Java基础语法2(共15页).pptx Java全套入门培训课件 Java基础 03-面向对象(共18页).pptx Java全套入门培训...
### Java多线程入门知识点详解 #### 一、引言 多线程是现代软件开发中的重要技术之一,尤其在Java编程语言中占有极其重要的地位。对于任何一位Java程序员而言,掌握多线程的基本概念和技术是非常必要的。本文将...
Java SE编程入门教程 java线程(共61页).pptx Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 ...
Java SE编程入门教程 java线程(共61页).pptx Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 ...
以上内容涵盖了Java线程入门的基础知识,通过学习这些概念和技术,你可以开始编写并发程序,理解和解决多线程环境中的问题。在实践中,还需要结合具体场景进行深入研究和优化,以实现高效并发。
### Java线程入门知识点详解 #### 一、Java线程概览 - **目标读者**:本教程面向那些已经熟练掌握Java语言基本应用但对多线程编程尚不熟悉的程序员。 - **主要内容**:本教程将从零开始介绍Java线程的基础知识,...
Java SE编程入门教程 java线程(共61页).pptx Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 ...
本教程将深入浅出地介绍Java线程的基础知识,帮助初学者快速入门。 一、线程的创建 1. 继承Thread类:创建一个新的类,该类继承自Thread类,然后重写其run()方法。实例化这个子类对象后,调用start()方法即可启动...
【Java入门知识详解】 Java,作为一种广泛使用的编程语言,由Sun Microsystems公司于1995年推出,由Bill Joy、Patrik Naughton、Mike Sheridan 和 James Gosling(Java之父)等人共同研发。最初名为Oak,因其适用于...
本文将从进程、线程的基本概念、Java中的多线程支持以及如何创建和控制线程等方面,为你提供一个入门级别的教程。 1. 进程与线程: - **程序**是静态的代码集合,而**进程**是程序的一次动态执行过程,它是操作...