继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java基础之多线程也很有意思

一只丑橘
关注TA
已关注
手记 2
粉丝 28
获赞 235

之前看到一题,题目的要求是利用多线程的知识,写一个程序。实现在控制台循环打印“ * ”(星号),然后输入数字,打印对应个数的星号,再输入数字,打印的个数随之改变。如果是用while循环或者for循环来做的换,那么就很简单了,但是用多线程来做就很有意思了。来分析一下,应该怎么做。。。。。。
题目要求来看,有两点,打印星号、输入数字改变打印星号的个数。所以应该需要创建两个线程。
下面就是我的代码:


用到了三个类。输入数字的线程类:ChangeNum.java ;打印星号的线程类:PrintImage.java;测试类: test.java

1、ChangeNum,类

package code;
import java.util.Scanner;
public class ChangeNum implements Runnable {

    static int num=1;  //给一个初始值,加载的时候答应的星号的个数
    @Override
    public void run() {
        Scanner sc=new Scanner(System.in);
        while(true) {
             num=sc.nextInt();
        }

    }

}

2、PrintImage类

package code;

public class PrintImage implements Runnable {
    @Override
    public void run() {

        while(true) {
            for(int i=0;i<ChangeNum.num;i++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

3、test测试类

package code;

public class test {
    public static void main(String[] args) {
        //创建线程实例并启动
        Thread t1=new Thread(new ChangeNum());
        Thread t2=new Thread(new PrintImage());
        //启动线程
        t1.start();
        t2.start();
    }

}

运行之后就可以无限打印下去了(只要不系统崩溃的话)。这里用了两个线程类。采用继承Runnable接口的方法(还可以采用继承Thread类的方法,但是轻易不要让你的类去继承一个类,毕竟java采用的是单继承嘛……)。两个线程实例t1和t2是并发执行的。你可以自己去试试。加深对java多线程的理解是很有帮助的。

打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP