为什么需要多线程?

. 模型的简化,如某些程序是由多个相对独立任务的运行:

. 图形界面的出现,输入、输出的阻塞

. 多核CPU的更好利用

. 异步行为的需要

Java多线程的特性:

. 程序的入口main本身是一个线程

. 线程是并发的,无序执行的

. 线程内部是顺序执行的

. 共享数据

Java多线程的风险:

. 安全风险:由于线程的操作顺序是不确定的,某些在单线程下能运行的程序到多线程下会出现意外的结果。

. 性能风险:服务器的吞吐量、响应性、资源消耗

Java多线程API:

Java可以通过两种形式创建线程:一、实现Runnable接口,二、继承Thread类。

  1. public class ThreadTest extends Thread {
  2. public static void main(String[] args) {
  3. ThreadTest thread = new ThreadTest();
  4. thread.start();
  5. for (int i=0; i<10; i++) {
  6. System.out.println("main:"+i);
  7. }
  8. }
  9. @Override
  10. public void run() {
  11. for (int i=0; i<10; i++) {
  12. System.out.println("thread:"+i);
  13. }
  14. }
  15. }
  1. package com.openrdp.thread.api;
  2. public class RunnableTest implements Runnable {
  3. public static void main(String[] args) {
  4. RunnableTest runnable = new RunnableTest();
  5. Thread thread = new Thread(runnable);
  6. thread.start();
  7. for (int i=0; i<10; i++) {
  8. System.out.println("main:"+i);
  9. }
  10. }
  11. @Override
  12. public void run() {
  13. for (int i=0; i<10; i++) {
  14. System.out.println("thread:"+i);
  15. }
  16. }
  17. }

Java线程池技术:

  1. package com.openrdp.thread.api;
  2. import java.util.concurrent.ExecutorService;
  3. import java.util.concurrent.Executors;
  4. public class TreadPoolTest {
  5. public static void main(String[] args) {
  6. ExecutorService threadPool = Executors.newFixedThreadPool(99);
  7. TaskThread thread1 = new TaskThread("t1");
  8. threadPool.execute(thread1);
  9. TaskThread thread2 = new TaskThread("t2");
  10. threadPool.execute(thread2);
  11. }
  12. static class TaskThread implements Runnable {
  13. String param;
  14. public TaskThread(String param) {
  15. this.param = param;
  16. }
  17. @Override
  18. public void run() {
  19. }
  20. }
  21. }

java线程入门知识的更多相关文章

  1. Java web 入门知识 及HTTP协议详解

     Java  web  入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...

  2. Java基础入门知识

    Java编程入门知识   知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...

  3. java线程基础知识----线程与锁

    我们上一章已经谈到java线程的基础知识,我们学习了Thread的基础知识,今天我们开始学习java线程和锁. 1. 首先我们应该了解一下Object类的一些性质以其方法,首先我们知道Object类的 ...

  4. Java线程入门第一篇

    Java线程的状态有6种 1.  初始(NEW):新创建了一个线程对象,但还没有调用start()方法. 2.  运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running) ...

  5. java线程基础知识----线程基础知识

    不知道从什么时候开始,学习知识变成了一个短期记忆的过程,总是容易忘记自己当初学懂的知识(fuck!),不知道是自己没有经常使用还是当初理解的不够深入.今天准备再对java的线程进行一下系统的学习,希望 ...

  6. java线程基础知识----java daemon线程

    java线程是一个运用很广泛的重点知识,我们很有必要了解java的daemon线程. 1.首先我们必须清楚的认识到java的线程分为两类: 用户线程和daemon线程 A. 用户线程: 用户线程可以简 ...

  7. java线程入门一

    线程优先级: 在JAVA线程中,通过一个int型变量priority来控制线程优先级,线程的有限机为1-10,默认为5,优先级高的线程获得的运行时间要高于优先级低的线程.但这只是一个提示,操作系统和J ...

  8. Java线程基础知识(状态、共享与协作)

    1.基础概念 CPU核心数和线程数的关系 核心数:线程数=1:1 ;使用了超线程技术后---> 1:2 CPU时间片轮转机制 又称RR调度,会导致上下文切换 什么是进程和线程 进程:程序运行资源 ...

  9. Java线程入门第二篇

    Java线程通信方法 0.(why)每个线程都有自己的栈空间,我们要线程之间进行交流,合作共赢. 1.synchronized和volatile关键字 a)  看下面的synchronized关键字 ...

随机推荐

  1. codeforces 467C George and Job(简单dp,看了题解抄一遍)

    题目 参考了网页:http://www.xue163.com/exploit/180/1802901.html //看了题解,抄了一遍,眼熟一下,增加一点熟练度 //dp[i][j]表示是前i个数选出 ...

  2. encodeURI和encodeURIComponent的区别?

    encodeURI方法不会对下列字符编码 ASCII字母.数字.~!@#$&*()=:/,;?+' encodeURIComponent方法不会对下列字符编码 ASCII字母.数字.~!*() ...

  3. CSS设置input默认样式

    HTML <ul class="box"> <li> <input type="checkbox" name="vehi ...

  4. 类型转换、分支(day05)

    如果表达式里包含多个不同类型的数字就必须 首先把它们转换成同一个类型然后才能 计算 这个转换过程叫做隐式类型转换,完全由 计算机完成 隐式类型转换过程中一定把占地小的类型转换 成占地大的类型 如果不同 ...

  5. touch:命令创建文件

    touch:创建空文件或改变文件的时间戳属性 [功能说明] touch命令有两个功能:一是创建新的空文件:二是改变已有文件的时间戳属性 [语法格式] touch [option] [file] tou ...

  6. 继续聊WPF——如何获取ListView中选中的项

    在WPF中获Listview中选中的项,与WinForm里面有着很大的区别,要亲身去研究一下在WPF中如果处理,其实也不难,来,下面我们一起来通过一个简单的示例来感悟一下吧. 第一步就是建立一个WPF ...

  7. 【习题 4-7 UVA - 509】RAID!

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果一行里面某位有>1个x 那么是invalid的. 没有x的话. 可以分析以下(设输入的标准Even为0,然后Odd为1) ...

  8. [bzoj2259][Oibh]新型计算机_Dijkstra

    新型计算机 bzoj-2259 Oibh 题目大意:给定一个n个数的数列,第i个数为a[i],更改第i个数至x的代价为|x-a[i]|.求最小代价,使得:读入一个数s1后,向后连着读s1个数,然后如s ...

  9. 收到微软寄来的MVP包裹

    经过一年多的艰苦努力,最终在7月份获得了微软SharePoint的MVP. 今天收到了微软从美国寄来的包裹. 内部图: 奖牌: 回忆过去一年.白天和客户撕逼,晚上回家写博客,或者翻译英文文章,去论坛回 ...

  10. SEO 爬虫原理介绍

    一篇关于网络爬虫程序的一些原理及体系结构纯技术文章,一些地方可能不会看的非常明确.对于SEO行业,常常和搜索引擎及其爬虫程序打交道,细致浏览下,一些不清楚而自己又非常想了解的地方,能够借助搜索来需找相 ...