java线程入门知识
为什么需要多线程?
. 模型的简化,如某些程序是由多个相对独立任务的运行:
. 图形界面的出现,输入、输出的阻塞
. 多核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 web 入门知识 及HTTP协议详解
Java web 入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...
- Java基础入门知识
Java编程入门知识 知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...
- java线程基础知识----线程与锁
我们上一章已经谈到java线程的基础知识,我们学习了Thread的基础知识,今天我们开始学习java线程和锁. 1. 首先我们应该了解一下Object类的一些性质以其方法,首先我们知道Object类的 ...
- Java线程入门第一篇
Java线程的状态有6种 1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法. 2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running) ...
- java线程基础知识----线程基础知识
不知道从什么时候开始,学习知识变成了一个短期记忆的过程,总是容易忘记自己当初学懂的知识(fuck!),不知道是自己没有经常使用还是当初理解的不够深入.今天准备再对java的线程进行一下系统的学习,希望 ...
- java线程基础知识----java daemon线程
java线程是一个运用很广泛的重点知识,我们很有必要了解java的daemon线程. 1.首先我们必须清楚的认识到java的线程分为两类: 用户线程和daemon线程 A. 用户线程: 用户线程可以简 ...
- java线程入门一
线程优先级: 在JAVA线程中,通过一个int型变量priority来控制线程优先级,线程的有限机为1-10,默认为5,优先级高的线程获得的运行时间要高于优先级低的线程.但这只是一个提示,操作系统和J ...
- Java线程基础知识(状态、共享与协作)
1.基础概念 CPU核心数和线程数的关系 核心数:线程数=1:1 ;使用了超线程技术后---> 1:2 CPU时间片轮转机制 又称RR调度,会导致上下文切换 什么是进程和线程 进程:程序运行资源 ...
- Java线程入门第二篇
Java线程通信方法 0.(why)每个线程都有自己的栈空间,我们要线程之间进行交流,合作共赢. 1.synchronized和volatile关键字 a) 看下面的synchronized关键字 ...
随机推荐
- esp32(M5STACK)在线体验(Ubuntu)
我们往m5stack烧录的固件是可以在线编程的 具体使用方法可以参考 https://github.com/m5stack/M5Cloud/blob/master/README_CN.md ...
- Package和Activity
Package Package 包.只是在我们的app中这个Package是唯一的,就像你身份证号码一样.在我们做app自动化时,我们就需要知道他的Package,我们知道了Package那么也就知道 ...
- shell常用语法
for.if条件: https://blog.51cto.com/qiufengsong/1252889 一.for循环: );do echo $i done ###第一行:seq是指1到10,第二行 ...
- 转载:Java中的Checked Exception——美丽世界中潜藏的恶魔?
转自 Amber-Garden 的 博客 https://www.cnblogs.com/loveis715/p/4596551.html 在使用Java编写应用的时候,我们常常需要通过第三方类库来帮 ...
- 纯CSS 3D翻转一个面(翻转导航菜单 立方体)
在做练习的时候学到css的翻转导航菜单,原代码有点让人头疼,通过对其css的参数一点点研究了其实现过程. 这里推荐大家研究这个3D翻转动画的代码. 我的github:swarz,欢迎给老弟我++星星 ...
- Linux基础知识和命令
1,用户登录: root(管理员),权限最大.安全生产必要时再使用. 普通用户:权限有限.2, 终端终端设备终端:输入和输出设备,如:键盘鼠标显示器; 图形终端:虚拟机进入窗 ...
- 程序包管理rpm和yum
Linux程序包管理: API:Application Programming Interface源码包 POSIX:Portable OS 程序源代码 --> 预处理 --> 编译 -- ...
- 2.1 SVN的安装
一.SVN客户端安装 运行TortoiseSVN-1.6.6.17493-win32-svn-1.6.6.msi程序, 开始安装 点击Next, 下一步 选择 I accept 接受, 点击Next ...
- rabbit-入门
#启用rabbit的web管理 rabbitmq-plugins.bat enable rabbitmq_management 发布的窗口用TOPIC模式 rabbitmq没有确认消息接收的返回值,M ...
- [bzoj3505][CQOI2014]数三角形_组合数学
数三角形 bzoj-3505 CQOI-2014 题目大意:给你一个n*m的网格图,问你从中选取三个点,能构成三角形的个数. 注释:$1\le n,m\le 1000$. 想法:本来是想着等中考完了之 ...