<JAVA学习笔记4>——进程、线程简单介绍
来源:互联网 发布:excel数据平均值怎么用 编辑:程序博客网 时间:2024/05/19 13:18
- 1、线程、进程:
进程:是一个具有一定独立功能的程序,每一个进程都有自己的地址空间。
线程:是进程的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程至少有一个线程(单线程程序)
进程有三种基本状态:就绪、执行、阻塞
2、线程中常见的方法:
- Thread(Runnable target)
- Thread(Runnable target,String name);
- String getName();// 返回该线程的名称。
- void join();//等待线程终止
- boolean isDaemon();//将该线程标记为守护线程或用户线程。
- void yield();//暂停当前正在执行的线程对象,并执行其他线程。该方法必须在启动线程前调用。
- isAlive() 测试线程是否处于活动状态。
setPriority();优先级
start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。 多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。- void sleep();//
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),还会受到系统时间的影响。该线程不丢失任何监视器的所属权。
当CPU分配给该进程1s时间时,进程中的两个线程0、1开始抢夺资源,若线程0抢占到时间执行,在线程0中有 sleep(1000);在这个过程中,线程0是不会释放这个CPU的资源的。即:就算当前线程在休眠,也不会丢失任何监视器的所属权。
实例代码:
package com.xiaofeng.example;/** * 线程的两种用法:Thread(继承类) 、 Runnable(实现接口) */public class ThreadDemo { public static void main(String[] args) { MyThread t1 = new MyThread(); // 设置抢占CPU执行时间的优先级(知识几率,但不一定)// t1.setPriority(Thread.MAX_PRIORITY); // 把t1设置为守护线程 t1.setDaemon(true); t1.start(); MyRunnable myRunnable = new MyRunnable(); Thread t2 = new Thread(myRunnable); t2.start(); for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + "-- " +i); try { t1.sleep(1000); } catch (InterruptedException e1) { e1.printStackTrace(); } if (i == 6) { /*try { // 等待该线程被终止 // 此处的含义是, 当i==6时等待t1执行完再执行自己的线程(main) t1.join(); } catch (InterruptedException e) { e.printStackTrace(); }*/ } } } static class MyThread extends Thread { @Override public void run() { super.run(); for (int i = 0; i < 10; i++) { try { // 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。该线程不丢失任何监视器的所属权。 Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " --" + System.currentTimeMillis() + "-- " +i); } } } static class MyRunnable implements Runnable { @Override public void run() { for (int i = 0; i < 10; i++) { try { // 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。该线程不丢失任何监视器的所属权。 Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " --" + System.currentTimeMillis() +"-- " +i); } } }}
1 0
- <JAVA学习笔记4>——进程、线程简单介绍
- java-学习笔记-线程&进程
- JAVA学习笔记49——线程概念+进程、线程区别+创建进程三种方法
- JAVA学习笔记50——线程状态+停止进程+阻塞进程
- java学习笔记-线程和进程-黑马
- Java学习笔记3-进程与线程
- Java学习笔记之进程和线程
- 03-java学习笔记【进程与线程】
- 学习笔记——JAVA线程<4>线程的同步
- java线程简单介绍
- java线程简单介绍
- C#学习笔记---进程与线程的一个简单解释
- 学习笔记——进程和线程的区别
- Python线程与进程——学习笔记
- Python学习笔记——进程和线程
- 【Python】学习笔记——-11、进程和线程
- Python学习笔记(七)——进程和线程
- OS学习笔记——进程与线程
- Elasticsearch java API (9)更新的API
- Android OTA升级(2):开启升级过程
- IT职场人生-札记
- GMT,UTC,CST
- hdu4862Jump【最大费用最大流,判断是否满流】2014多校联合
- <JAVA学习笔记4>——进程、线程简单介绍
- 面试题1-将二叉搜索树转变成排序的双向链表
- vim常用按键图示
- 网页中各种特殊符号
- 采用shiro实现登录认证与权限授权管理
- 正则表达式在java中的运用
- open,fopen,read,fread,write,fwrite
- 对此函数的改正
- web.xml文件的作用----接上面的那个,这个是用的不多的配置