Java 多线程的实现方法

package com.jckb;
/**多线程实现的两种方法
 *
 * @author gx
 *
 */

public class Test2 {
    public static void main(String[] args) {
        Mythread m = new Mythread();
        m.start();// 不能直接调用run方法
        // m.run();//是方法调用,不是线程的启动
        Thread t = new Thread(new Mythread2());
        t.start();

    }
}

// 线程停止的方法是run方法返回
// flag=false退出
// 线程停止后不能再次启动
class Mythread extends Thread {
    @Override
    public void run() {
        boolean flag = true;
        int i = 1;
        while (flag) {

            System.out.println("i=" + i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            i++;
            if (i == 5) {
                flag = false;
                // return;
            }
        }
    }
}

class Mythread2 implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("i=" + i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

时间: 2024-10-17 15:24:26

Java 多线程的实现方法的相关文章

Java多线程死锁避免方法

一.什么是死锁当两个或两个以上的线程在执行过程中,因为争夺资源而造成的一种相互等待的状态,由于存在一种环路的锁依赖关系而永远地等待下去,如果没有外部干涉,他们将永远等待下去,此时的这个状态称之为死锁.经典的 "哲学家进餐" 问题很好地描述了死锁状况:5个哲学家去吃中餐,坐在一张圆桌旁,他们有5根筷子(而不是5双),并且每两个人中间放一根筷子,哲学家们要么在思考,要么在进餐,每个人都需要一双筷子才能吃到东西,并在吃完后将筷子放回原处继续思考,有些筷子管理算法 (1) 能够使每个人都能相对

Java多线程同步的方法

一 synchronized关键字 1.synchronized实现原理: ---基于对象监视器(锁) java中所有对象都自动含有单一的锁,JVM负责跟踪对象被加锁的次数.如果一个对象被解锁,其计数变为0.在任务(线程)第一次给对象加锁的时候, 计数变为1.每当这个相同的任务(线程)在此对象上获得锁时,计数会递增.只有首先获得锁的任务(线程)才能继续获取该对象上的多个锁.每当任务离开时,计数递减,当计数为0的时候,锁被完全释放. Java中每个对象或者类都有一把锁与之相关联,对于对象来说,监视

java多线程的实现方法

java虚拟机允许应用程序并发地运行多个线程.在java语言中,多线程的实现一般有以下三种方法: 1)实现Runnable接口,并实现该接口的run()方法 class MyThread implements Runnable { public void run(){ System.out.println("Thread Body"); } } public class Test { public static void main(String[] args) { MyThread t

Java多线程之~~~~synchronized 方法

在多线程开发中,总会遇到多个在不同线程中的方法操作同一个数据,这样在不同线程中操作这个数据不同的顺序 或者时机会导致各种不同的现象发生,以至于不能实现你预期的效果,不能实现一致性,这时候就可以使用 synchronized关键字对一个方法来说,这个synchronized能保证所有调用这个方法的线程只有一个正在操作这个方法, 不会出现同时多个线程进入这个方法的情况,下面我们来一个例子说明这个情况. 首先是一个Account类,这个类模拟账户,提供增加工资和减少工资的方法,当然,这个方法是被syn

Java多线程的创建方法

Java 线程类也是一个 object 类,它的实例都继承自java.lang.Thread 或其子类. 可以用如下方式用 java 中创建一个线程,执行该线程可以调用该线程的 start()方法: Tread thread = new Thread(); thread.start(); 在上面的例子中,我们并没有为线程编写运行代码,因此调用该方法后线程就终止了. 编写线程运行时执行的代码有两种方式:一种是创建Thread 子类的一个实例并重写 run 方法,第二种是创建类的时候实现 Runna

Java多线程中join方法详解

join()方法用于让当前执行线程等待join线程执行结束.其实现原理是不停的检查join线程是否存活,如果join线程存活则让当前线程永远等待. join()方法部分实现细节 while(isAlive()) { wait(0) } 其中wait(0)表示永远等待下去. join线程中止后,线程的this.notifyAll()方法会被调用,调用notifyAll()是在JVM里调用的所有在JDK中看不到,大家可以看JVM源码 示例程序: public calss ThreadTest{ pu

java 多线程-常用其他方法

常用其他方法isAlive() 判断线程是否还活着,即是否终止setName() 给线程起名,代理角色getName() 获取线程名字 public class n { public static void main(String[]args) throws InterruptedException { System.out.println(Thread.currentThread().isAlive()); //设置名字,真实角色(面向对象方式设置)和代理角色(线程的默认名字0到10) tes

Java多线程的一些方法

首先介绍线程的五种状态: 新生态:New Thread() 就绪态:准备抢CPU时间片 运行态:抢到了CPU时间片 阻塞态:放弃已经抢到的CPU时间片,且暂时不参与争抢 死亡态:Run运行完了之后 接下来介绍三种方法:线程的阻塞,线程的优先级设置,线程的礼让 1 public class MutliThreadDemo4 { 2 public static void main(String[] args) { 3 threadBlock(); 4 //threadPriority(); 5 //

新兵日记--java多线程学习(一)  --如何创建线程

java 多线程的实现方法 可以通过继承Thread类和实现Runnable接口来实现,而Thread类实际上实现了Runnable接口 ,两种创建线程的方法性质是一样的,并没有什么本质区别 Thread类 1. 创建MyThread 类并继承Thread类 public class MyThread extends Thread{} 2. 在MyThread类中重写 Thread类的run()方法,值得一提的是Thread类的run()方法是实现了Runnable接口,所以继承Thread类和