//后台进程
/** 对于java来说只要还有一个前台线程在运行,这个进程就不结束,如果一个进程* 只有后台线程,这个进程就会结束*/
package xian_cheng;public class Example06 {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("main线程是后台线程吗?"+Thread.currentThread().isDaemon());DamonThtead dt=new DamonThtead();//创建一个DamonThread对象dt;Thread t=new Thread(dt,"后台线程");//创建线程t共享dt资源System.out.println("t线程是后台线程吗?"+t.isDaemon());//java默认的是前台进程/**注意要将某个线程设置为后台线程,必须在该线程启动之前*t.setDaemon(true);语句必须位于t.start之前*/t.setDaemon(true);//将线程t设置为后台线程t.start(); //开启线程for (int i = 0; i < 10; i++) {System.out.println(i);}}}
class DamonThtead implements Runnable{public void run(){while (true) {System.out.println(Thread.currentThread().getName()+"------is running");}}}//线程的优先级
package xian_cheng;
import java.security.PublicKey;public class Example07 {public static void main(String[] args) {// TODO Auto-generated method stubThread minThread=new Thread(new MinPriority(),"优先级较低的线程");Thread maxThread=new Thread(new MaxPriority(),"优先级较gao的线程");minThread.setPriority(Thread.MIN_PRIORITY);maxThread.setPriority(10);maxThread.start();minThread.start();}}//定义类MaxPriority实现Runnable接口
class MaxPriority implements Runnable{public void run(){for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName()+"正在输出:"+i);}}
}
//定义类MinPriority实现Runnable接口
class MinPriority implements Runnable{public void run(){for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName()+"正在输出:"+i);}}
}/线程的休眠package xian_cheng;
/** 线程的休眠,它能使线程进入阻塞状态* sleep方法声明抛出InterruptedException异常* 当线程调用sleep()方法后在指定的时间内该线程是不会执行的* sleep()是静态方法只能控制当前正在运行的线程* */
public class Example08 {public static void main(String[] args) throws InterruptedException {// TODO Auto-generated method stubThread thread=Thread.currentThread();System.out.println(thread.getName());new Thread(new SleepThread()).start();for (int i = 0; i < 10; i++) {if (i==5) {Thread.sleep(2000);}System.out.println("主线程正在输出:"+i);Thread.sleep(500);}}}
class SleepThread implements Runnable{public void run(){for (int i = 0; i < 10; i++) {if (i==3) {try {Thread.sleep(2000);//当前线程休眠2秒} catch (InterruptedException e) {// TODO: handle exceptione.printStackTrace();}}System.out.println("线程一正在输出:"+i);try {Thread.sleep(2000);//当前线程休眠2秒} catch (InterruptedException e) {// TODO: handle exceptione.printStackTrace();}}}
}
/线程让步
package xian_cheng;
/** 线程让步通过yield()方法来实现,与sleep()的区别是它不会阻塞该线程,* 只是将线程转换为就绪状态*/
public class Example09 {public static void main(String[] args) {// TODO Auto-generated method stubThread t1=new YieldThread("线程A");Thread t2=new YieldThread("线程B");t1.start();t2.start();}}class  YieldThread extends Thread{public YieldThread(String name){super(name);//调用父类的构造方法}public void run(){for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName()+"---"+i);if (i==3) {System.out.print("线程让步:");Thread.yield();//线程做出让步}}}}/线程同步
package xian_cheng;
/** 线程同步*/
public class Example12 {public static void main(String[] args) {// TODO Auto-generated method stubTicket1 ticket1=new Ticket1();new Thread(ticket1,"窗口1").start();new Thread(ticket1,"窗口2").start();new Thread(ticket1,"窗口3").start();}}class Ticket1 implements Runnable{private int tickets=10;Object look=new Object();//定义一个对象作为同步代码块的锁/** 注意锁对象的创建代码不能放在run方法中,否者每个线程运行到run()方法都会* 创建一个锁,这样每个线程都有一个不同的锁,每一个锁都有一个自己的标志位。* 线程之间便不能产生同步的效果*/public void run(){while (true) {synchronized (look) {try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO: handle exceptione.printStackTrace();}if (tickets>0) {System.out.println(Thread.currentThread().getName()+"---卖出的票"+tickets--);}else {break;}}}}
}

												

java Thread 类的几种方法相关推荐

  1. java 载入类的三种方法

    载入类的几种方法 所有资源都通过ClassLoader载入到JVM里,那么在载入资源时当然可以使用ClassLoader,只是对于不同的资源还可以使用一些别的方式载入,例如对于类可以直接new,对于文 ...

  2. Java动态加载一个类的几种方法以及invoke

    一.加载一个类的几种方法 接口 IUser package org.me.javaapp;/**** @author Administrator*/ public interface IUser {} ...

  3. java终止线程的三种方法

    有三种方法可以使终止线程. 1.  使用退出标志,使线程正常退出,也就是当run方法完成后线程终止. 2.  使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend.resum ...

  4. Java 创建线程的三种方法比较

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...

  5. java多线程同步的四种方法_java中实现多线程的两种方法

    java多线程有几种实现方法,都是什么?同步有几种实java中多线程的实现方法有两种:1.直接继承thread类:2.实现runnable接口:同步的实现方法有五种:1.同步方法:2.同步代码块:3. ...

  6. java 获取包路径_java获取java文件路径的四种方法

    java获取java文件路径的四种方法 发布时间:2020-04-17 11:03:45 来源:亿速云 阅读:750 作者:小新 今天小编给大家分享的是java获取java文件路径的四种方法,很多人都 ...

  7. Java Thread类的使用

    From:http://www.cnblogs.com/dolphin0520/p/3920357.html 一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态, ...

  8. Java 创建类的四种方式

    Java 创建类的四种方式 对于上学期已经学习过c++的同学,是不是对另一大编程语言产生了浓厚的兴趣,对于c++的面向对象编程,又和java的面向变量有何区别,下面我们从java四种创建对象来说起. ...

  9. Java创建线程的七种方法,全网最全面总结~

    目录 前言 一.继承Thread,重写run方法 二.实现Runnable接口,重写run方法 三.使用匿名内部类创建 Thread 子类对象 四.使用匿名内部类,实现Runnable接口 五.lam ...

最新文章

  1. IBM已“弃疗”,AI医疗研发10年不赚钱,终于打算卖了
  2. 迪米特法则 java_java设计模式--迪米特法则
  3. [ACTF2020 新生赛]Upload
  4. JavaWeb-综合案例(用户信息)-学习笔记06【复杂条件查询功能】
  5. mfc存储颜色到mysql_mfc存储二进制文件
  6. 2017-2018-1 20155336 《信息安全系统设计基础》第八周课堂测试
  7. tarnado源码解析系列一
  8. GitHub+Jenkins持续集成简介
  9. python正则表达式快速入门_Python学习笔记——正则表达式入门
  10. spring mvc ModelAndView向前台传值
  11. python自动保存ping结果_利用python获取Ping结果示例代码
  12. CentOS7安装Java,java高级面试笔试题
  13. img之间出现缝隙的原因_神马情况?美缝剂施工出现脱胶是什么原因?
  14. latex 行内公式
  15. Mahout实战---编写自己的相似度计算方法
  16. 角度换算数字在线计算机,角度换算成数字(计算器数字转角度换算)
  17. c语言的条件运算符,条件运算符c语言
  18. python机器学习——决策树(分类)及“泰坦尼克号沉船事故”数据集案例操作
  19. 柔顺控制 - 技术发展综述
  20. 七牛云 CDN 调用

热门文章

  1. 神策数据上线 IPTV Demo ,三大价值助力数据驱动
  2. PPT 下载 | 纷享销客刘晨:客户生命周期服务设计
  3. 简述基于EDA技术的FPGA设计
  4. 【USACO 2.1】The Castle
  5. 利用FluidMoveBehavior制作出手机通讯录平滑的效果
  6. 用javascript判断当前是安卓平台还是ios平台
  7. .Net下的签名与混淆
  8. 针对应用开发者的几点建议
  9. 阡陌路-车行天下之新手必备手册
  10. Ashby diagram