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. 【emWin】例程二十一:窗口对象——Edit

    简介: 编辑框通常用作输入文本的主要用户界面,也可使用编辑字段以二进制.十进制或十六进制模式输入值. 触摸校准(上电可选择是否进入校准界面) 实验指导书及代码包下载: 链接:http://pan.ba ...

  2. Java多线程系列——线程池简介

    什么是线程池? 为了避免系统频繁地创建和销毁线程,我们可以让创建的线程进行复用.用线程时从线程池中获取,用完以后不销毁线程,而是归还给线程池. JDK 对线程池的支持 为了更好的控制多线程,JDK 提 ...

  3. Java 同时返回多个不同类型的方法

    Java 同时返回多个不同类型的方法 2016年12月02日 16:05:07 FXBStudy 阅读数:10045   前言:虽然对于这种需求不常用,且比较冷门,但是还是有其存在的价值,再次做一下整 ...

  4. jq ajax post body raw传json

    $.ajax( { url: '', 'data': JSON.stringify({ }), 'type': 'POST', 'processData': false, 'contentType': ...

  5. MATLAB plot()、scatter()的RGB颜色设置以及生成渐变色

    1.转载:https://blog.csdn.net/wh1312142954/article/details/80796764 plot(x,y,'Color',[R G B]);%只要设置颜色中R ...

  6. Eclipse 中修改tomcat设置内存大小

    修改1: 在Eclipse中下面Servers双击Tomcat Server... 然后点击General InformAtion 下的Open launch configuration: 会弹出Ed ...

  7. Python 函数 (关键字参数)

    关键字参数 可变参数允许你传入0个或者任意个参数,这些可变参数在函数调用时会自动组装成一个tuple,而关键字参数允许你传入0个或者任意个含参数名的参数,这些参数在函数内部自动组装成为一个dict d ...

  8. Vue----目录结构

    目录结构: (1):build:---------------------------------------------------------------------------------:保存 ...

  9. Ubuntu设置DNS永久生效

    环境查看 设置临时生效,修改配置文件/etc/resolv.conf nameserver 202.96.134.133 重启失效 设置永久生效,修改网卡配置文件/etc/network/interf ...

  10. asp:LinkBtton PostBackUrl 中文乱码

    这个也不行: HttpUtility.UrlEncode("中文") 替代方案为:<asp:HyperLink NavigateUrl=“~/路径” Target=" ...