JavaForAndroid15

进程与线程
一、线程的执行过程


线程的执行过程.png

二、实现线程的两种方法
1、定义一个线程类,需继承Thread类
class FirstThread extends Thread {
//必须重写run方法,该方法称为线程体
public void run () {
for (int i=0;i<100;i++){
System.out.println("FirstThread-->"+i);
}
}
}
class Test {
public static void main(String args[]) {
//生成一个线程类的对象
FirstThread ft = new FirstThread();
//使用start方法启动线程
ft.start();//ft线程处于就绪状态
//ft.run();不能这样运行
for (int i=0;i<100;i++){
System.out.println("mainThread-->"+i);
}
}
}

2、实现Runnable接口
class RunnableImpl implements Runnable {
public void run(){
for (int i=0;i<100;i++){
System.out.println("Runnable-->"+i);
}
}
}
class Test {
public static void main(String args[]) {
//生成一个Runnable接口实现类的对象
RunnableImpl ri= new RunnableImpl();
//生成一个Thread对象,并将Runnable接口实现类的对象作为参数,传递给Thread对象
Thread t = new Thread(ri);
//使用start方法启动线程
t.start();//ft线程处于就绪状态
for (int i=0;i<100;i++){
System.out.println("mainThread-->"+i);
}
}
}

三、线程的控制方法
中断线程
Thread.sleep(); //线程休眠,参数为毫秒,需要捕获异常,结束后线程进入就绪状态
Thread.yield(); //自动让出CPU,然后和其他线程一起再次抢占CPU
设置线程的优先级,最大是10,最小是1
getPriority();
setPriority();
Thread t = new Thread(ri);
t.setPriority(Thread.MAX_PRIORITY); //设置最大优先级 10
t.setPriority(Thread.MIN_PRIORITY); //设置最小优先级 1

五、多线程数据安全
class MyThread implements Runnable {
int i = 100;
public void run(){
while(true){
synchronized(this){ //同步锁,this为锁住的对象,this可以是其他对象
//获取当前代码运行的线程
System.out.println(Thread.currentThread().getName()+i);
i--;
Thread.yield();
if(i<0){
break;
}
}
}
}
}
class Test {
public static void main(String args[]) {
MyThread ri= new MyThread();
//生成两个Thread对象,这两个Thread公用同一个线程体
Thread t1 = new Thread(ri);
Thread t2 = new Thread(ri);
t1.setName("线程a");
t2.setName("线程b");
t1.start();
t2.start();
}
}
注:如果一个线程获得了一个对象的同步锁,那么这个对象上所有其他同步的代码都是不能被其他线程执行,都需要等待同步锁释放后才能被执行。

同步方法
public synchronized void fun1(){
//同步方法锁住的对象是this
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 早上一起床,看到柜子上自己喜欢的几本书,便会心的笑了,我内心深处的安宁便来源于此,是的,我是一个精神追求...
    静夜思a阅读 321评论 0 0
  • 最近一个朋友和她的婆婆闹了矛盾,向我倾诉她知道解决办法是从心里接纳婆婆,不过实际上她却做不到,因为一看到婆婆...
    蓝心遥阅读 932评论 0 1
  • 有时候女人们梦寐的烟雾是我唇边唯一的东西 她们的洗浴使水源洁净使词语使我使事实结出小白花 有时候我是她们的唯一在通...
    印虹阅读 138评论 0 2