先提一下进程,可以理解为操作系统管理的基本单元。

线程呢,在进程中独立运行的子任务。举个栗子:QQ.exe运行时有很多子任务在同时运行,比如好友视频线程、下载视频线程、传输数据线程等等。

  • 多线程的优势?

     在单任务运行环境中,需要排队执行,也就是我们所说的同步,CPU利用率大幅降低。

     多任务运行环境中,CPU可以来回切换,系统运行效率提升。多线程是异步的,所以千万不要把 Eclipse IDEA里的代码顺序当成线程执行顺序。

  • 实现?

   继承Thread类

package chapter1;
public class MyThread extends Thread{
public void run(){
System.out.println("MyThread");
}
}
package test;

import chapter1.MyThread;

public class Run {
public static void main(String[] args){
MyThread mythread = new MyThread();
mythread.start();
System.out.println("结束");
}
}
运行结果:
结束
MyThread//有个小小问题,为什么结束是在前面的噢,不管试多少次

注意:

  1. Thread.java类的start()通知线程规划器,等待调用线程的run()。这个过程让系统安排一个时间使线程得到运行,具有异步执行的效果。如果调用Thread.run(),就变成了同步执行,是由main主线程来调用run()的
  2. 执行start()方法的顺序不代表线程的启动顺序//可以多new几个,然后慢慢start

     实现Runnable接口

  首先,瞄一下Thread的构造方法

   

   发现 ~ 构造函数可以传入Runnable接口的对象

package chapter1;

public class MyRunnable implements Runnable{
public void run(){
System.out.println("Runnable");
}
}
package test;

import chapter1.MyRunnable;

public class Run {
public static void main(String[] args){
MyRunnable myRunnable = new MyRunnable();
Thread t1 = new Thread(myRunnable);
t1.start();
System.out.println("结束");
}
}
运行结果:
结束
Runnable//它怎么又是结束在前面

啊啊啊啊啊啊啊写文也太难了吧,代码和字都纯手打,放弃orz,入坑即弃坑,乖乖啃书了

Java多线程编程核心技术(一)的更多相关文章

  1. Java多线程编程核心技术---学习分享

    继承Thread类实现多线程 public class MyThread extends Thread { @Override public void run() { super.run(); Sys ...

  2. Java多线程编程核心技术---对象及变量的并发访问(二)

    数据类型String的常量池特性 在JVM中具有String常量池缓存的功能. public class Service { public static void print(String str){ ...

  3. Java多线程编程核心技术

    Java多线程编程核心技术 这本书有利于对Java多线程API的理解,但不容易从中总结规律. JDK文档 1. Thread类 部分源码: public class Thread implements ...

  4. 《Java多线程编程核心技术》推荐

    写这篇博客主要是给猿友们推荐一本书<Java多线程编程核心技术>. 之所以要推荐它,主要因为这本书写得十分通俗易懂,以实例贯穿整本书,使得原本抽象的概念,理解起来不再抽象. 只要你有一点点 ...

  5. 《java多线程编程核心技术》(一)使用多线程

    了解多线程 进程和多线程的概念和线程的优点: 提及多线程技术,不得不提及"进程"这个概念.百度百科对"进程"的解释如下: 进程(Process)是计算机中的程序 ...

  6. 《Java 多线程编程核心技术》- 笔记

    作为业务开发人员,能够在工作中用到的技术其实不多.虽然平时老是说什么,多线程,并发,注入,攻击!但是在实际工作中,这些东西不见得用得上.因为,我们用的框架已经把这些事做掉了. 比如web开发,外面有大 ...

  7. Thread.currentThread()和this的区别——《Java多线程编程核心技术》

    前言:在阅读<Java多线程编程核心技术>过程中,对书中程序代码Thread.currentThread()与this的区别有点混淆,这里记录下来,加深印象与理解. 具体代码如下: pub ...

  8. Java多线程编程核心技术(三)多线程通信

    线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体.线程间的通信就是成为整体的必用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时 ...

  9. Java多线程编程核心技术(二)对象及变量的并发访问

    本文主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题.阅读本文应该着重掌握如下技术点: synchronized对象监视器为O ...

  10. Java多线程编程核心技术(一)Java多线程技能

    1.进程和线程 一个程序就是一个进程,而一个程序中的多个任务则被称为线程. 进程是表示资源分配的基本单位,线程是进程中执行运算的最小单位,亦是调度运行的基本单位. 举个例子: 打开你的计算机上的任务管 ...

随机推荐

  1. Python学习随笔(1)--可视化工具plotly使用

    把数据库某列数据取出来,然后再在本地生成html文件形成可视化视图显示 #!/usr/bin/python# coding=utf-8 import pymysqlimport plotly.plot ...

  2. 软件测试day1

    Windows基础 一.什么是软件(software) 计算机(computer)=硬件(hardware)+软件(software) 软  件(software)=程序(program)+文档(do ...

  3. 深度学习实战-强化学习-九宫格 当前奖励值 = max(及时奖励 + 下一个位置的奖励值 * 奖励衰减)

    强化学习使用的是bellmen方程,即当前奖励值 = max(当前位置的及时奖励 + discout_factor * 下一个方向的奖励值)   discount_factor表示奖励的衰减因子 使用 ...

  4. 三个猜数字游戏代码(Python)

    def binary_search(list,item): low = 0 high = len(list)-1 while low <= high: mid = (low + high)//2 ...

  5. MySQL InnoDB 事务实现过程相关内容的概述

    MySQL事务的实现涉及到redo和undo以及purge,redo是保证事务的原子性和持久性:undo是保证事务的一致性(一致性读和多版本并发控制):purge清理undo表空间背景知识,对于Inn ...

  6. Cent OS 6.4下安装JDK1.6

    步骤1:查看Linux自带的JDK是否已安装 (卸载CentOS已安装的JDK)  安装好的CentOS会自带OpenJDK,用命令"java -version"查看,会有下面的信 ...

  7. ftp的主动模式和被动模式的配置和区别

    原文链接: https://www.cnblogs.com/lnlvinso/p/8947369.html ftp模式分为主动模式(active mode)和被动模式(passive mode),ft ...

  8. Codeforces Round #436 E. Fire(背包dp+输出路径)

    题意:失火了,有n个物品,每个物品有价值pi,必须在时间di前(小于di)被救,否则就要被烧毁.救某个物 品需要时间ti,问最多救回多少价值的物品,并输出救物品的顺序. Examples Input ...

  9. python的可变对象与不可变对象

    a = 1print(id(a))def fun(a): a = 2 print(a,id(a))fun(a)print(a,id(a)) # 1#为什么这里的a的值没有改变#因为在函数里变量赋值(内 ...

  10. 优化Android Studio/Gradle构建(转)

    参考:http://hm.itheima.com/thread-204217-1-1.html