package cn.sasa.demo1;

public class Test {
public static void main(String[] args) throws InterruptedException {
/**
* 进程:
* 进程指正在运行的程序。当一个程序进入内存运行,即变成一个进程
* 进程是处于运行过程中的程序,并具有一定独立功能
*
* 线程:
* 线程是进程中的一个执行单元,负责当前进程中程序的执行
* 一个进程至少有一个线程,一个进程可以有多个线程
*
* 线程的运行模式:
* a、分时调度
* 所有线程 轮流使用 CPU的使用特权,平均分配每个线程占用CPU 的时间
*
* b、抢占式调度
* 优先让 优先级高的线程使用CPU, 如果线程的优先级相同,那么就随机选择一个(线程的随机性)
* java使用抢占式调度
*
* 对于CPU的一个核而言,某个时刻,只能执行一个线程,
* 多线程程序并不能提高程序的运行速度,但能提高程序运行效率,让CPU的使用率更高
*
* 创建线程的目的:
* 建立程序单独运行的执行路径,让多部分代码实现同时执行。
*
* 创建新执行线程有两种方法:
* a、声明Thread的子类,重写run方法。创建对象,开启线程。run相当于其他线程中的main方法
* b、声明Runnable接口的实现类,实现run方法。
*
* public class Thread implements Runnable {...}
*
* public interface Runnable {
* public abstract void run();
* }
*
* 为什么调用Thread的start方法 而不是直接调用 run方法
* run方法不开启线程,只是调用对象的方法
* start开启线程,并让JVM调用run方法在开启的线程中执行
*
*
*
*/ //Thread子类创建线程
MyThread th1 = new MyThread();
th1.setName("线程名字");//修改名字要在start之前,一般不需要修改
th1.start();
th1.getName(); //Runnable接口的方式
//一般用这种方式,将执行的任务分离出来
Thread th3 = new Thread(new MyRunnable());
th3.start(); //currentThread 当前执行的线程
System.out.println(Thread.currentThread().getName()); //使用匿名内部类,实现多线程
//方式一:继承
//方式二:实现接口
new Thread() {
public void run() {
System.out.println("lalalala");
}
}.start(); new Thread(new Runnable() {
public void run() {
System.out.println("hahaha");
}
}).start(); for(int i=0; i<5; i++) {
//sleep 休眠多少毫秒
Thread.sleep(1000);
System.out.println(i);
} }
}
package cn.sasa.demo1;

public class MyThread extends Thread{
public void run() {
System.out.println(getName());
for(int i=0;i<60;i++) {
System.out.println("thread1-----run"+i);
} } // public MyThread() {
// super("线程的名字1");
// }
}
package cn.sasa.demo1;

public class MyRunnable implements Runnable{

    @Override
public void run() {
for(int i = 0; i<60; i++) {
System.out.println("runnable......"+i);
}
} }

java 线程 (一) Thread的更多相关文章

  1. 初识java线程(Thread)

    <1>.概念问题 线程的状态:1.NEW : 没有start的线程 2.RUNNING :可运行线程,可能正在执行,也可能正在等待操作系统中的其他资源,比如cpu时间片 3.BlOCKED ...

  2. java线程(上)Thread和Runnable的区别

    首先讲一下进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程. 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈 ...

  3. JAVA 线程学习 - Thread了解

    public class ThreadKnow { private TimeThread timeThread; private boolean flag; public ThreadKnow() { ...

  4. Java线程与多线程教程

    本文由 ImportNew - liken 翻译自 Journaldev.   Java线程是执行某些任务的轻量级进程.Java通过Thread类提供多线程支持,应用可以创建并发执行的多个线程. 应用 ...

  5. (Java学习笔记) Java Threading (Java线程)

    Java Threading (Java线程) ● Process & Thread Processes are the abstraction of running programs: A ...

  6. java线程面试

    1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成 ...

  7. 了解Java线程优先级,更要知道对应操作系统的优先级,不然会踩坑

    Java 多线程系列第 6 篇. 这篇我们来看看 Java 线程的优先级. Java 线程优先级 Thread 类中,使用如下属性来代表优先级. private int priority; 我们可以通 ...

  8. Java线程之创建线程

    翻译自:https://www.journaldev.com/1016/java-thread-example 进程 进程是一个自包含的执行环境,它可以被看成一个程序或应用程序.然而一个应用程序本身包 ...

  9. Java线程知识

    概念 线程生命周期 Java线程模型 线程方法 线程优先级 线程同步 线程在多任务处理应用程序中有着至关重要的作用 概念 基本概念 进程:在操作系统中每个独立运行的程序就是一个进程 线程:程序执行的一 ...

随机推荐

  1. Java知多少(27)继承的概念与实现

    继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似. 继承可以理解为一个类从另一个类获取方法和属性的过程.如果类B继承于类A,那么B就拥有A的方法和属性. ...

  2. Mac/Linux如何查找应用所安装路径

    Linux.Mac中查看某 个软件的安装路径(地址)有时显得非常重要.比如某个文件的快速启动项被删除,或者你要建立快速启动项,或者想删除. 添加安装文件等等,很多地方都要用到查案文件安装路径的命令. ...

  3. mycat 9066管理端口

    1.连接mycat 9066管理端口 命令:mysql -uroot -proot -P9066 -h127.0.0.1 -u:用户名 -p:密码 -P:端口 -h:ip地址例:linux路径切换到m ...

  4. Nginx 实现负载均衡

    .安装nginx和tomcat 我这里是使用docker安装的.安装流程可参照 dockerfile 这里安装了两个tomcat,端口分别是42000和42001.第二个tomcat的首页随便加了些代 ...

  5. Springboot学习笔记(五)-条件化注入

    前言 将Bean交给spring托管很简单,根据功能在类上添加@Component,@Service,@Controller等等都行,如果是第三方类,也可以通过标有@Configuration的配置类 ...

  6. 一个整型数组里除了一个数字之外,其他的数字都出现了两次。要求时间复杂度是O(n),空间复杂度是O(1),如何找出数组中只出现一次的数字

    思路分析:任何一个数字异或它自己都等于0,根据这一特性,如果从头到尾依次异或数组中的每一个数字,因为那些出现两次的数字全部在异或中抵消掉了,所以最终的结果刚好是那些只出现一次的数字. 代码如下: #i ...

  7. 14桥接模式Bridge

    一.什么是桥接模式 Bridge 模式又叫做桥接模式,是构造型的设 计模式之一.Bridge模式基于类的最小设计原则,通过 使用封装,聚合以及继承等行为来让不同的类承担不同 的责任.它的主要特点是把抽 ...

  8. 理解Generic.xaml和Themes

    "Generic.xaml"这个名称并非偶然 通过上面的叙述,你可能会有冲动将Generic.xaml中的Style代码剪切出来,粘贴到任何一个我们的控件可以找到的地方,然后把Ge ...

  9. Android Studio开发第三篇版本管理Git

    创建项目在前一篇讲了,这里就讲一下怎么把创建的新项目关联到远程仓库呢. 在as的菜单栏找到VCS/Import into Verson Control/Create Git Repository 弹出 ...

  10. SQL Server 端口号的使用

    SQL Server 端口号的使用 服务器地址  逗号 端口号 服务器地址,端口号 xxx.xxx.xxx.xxx,0000 www.xxx.com,1533  (1533是SQL Server 的端 ...