多线程中让main方法最先开始,最后结束的简单例子
来源:互联网 发布:ios仿淘宝商品详情 编辑:程序博客网 时间:2024/06/09 13:56
package com.eduask.luck;
public class ThreadTestOne {
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
MyDown md = new MyDown(10);
System.out.println(Thread.currentThread().getName() + "开始");// 打印开始标记
for (int ii = 0; ii < 10; ii++) {// 开10个线程
Thread t = new ImportThread(md);
t.start();
}
while(true){
if(md.count <= 0){//当10次循环结束的时候 才跳出while循环
break;
}
}
System.out.println(Thread.currentThread().getName() + "结束");// 打印开始标记
}
static class ImportThread extends Thread {
private MyDown c;
public ImportThread(MyDown c) {
this.c = c;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "开始...");// 打印开始标记
c.test();
// 做一些事情... ...
System.out.println(Thread.currentThread().getName() + "结束.");// 打印结束标记
}
}
//计数器
static class MyDown{
private int count ;
public MyDown(int count){
this.count = count;
}
public synchronized void test(){
count--;
}
}
}
public class ThreadTestOne {
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
MyDown md = new MyDown(10);
System.out.println(Thread.currentThread().getName() + "开始");// 打印开始标记
for (int ii = 0; ii < 10; ii++) {// 开10个线程
Thread t = new ImportThread(md);
t.start();
}
while(true){
if(md.count <= 0){//当10次循环结束的时候 才跳出while循环
break;
}
}
System.out.println(Thread.currentThread().getName() + "结束");// 打印开始标记
}
static class ImportThread extends Thread {
private MyDown c;
public ImportThread(MyDown c) {
this.c = c;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "开始...");// 打印开始标记
c.test();
// 做一些事情... ...
System.out.println(Thread.currentThread().getName() + "结束.");// 打印结束标记
}
}
//计数器
static class MyDown{
private int count ;
public MyDown(int count){
this.count = count;
}
public synchronized void test(){
count--;
}
}
}
0 0
- 多线程中让main方法最先开始,最后结束的简单例子
- 程序是从main开始执行,最后main返回就结束了吗?
- C++ 让控制台运行到最后按下回车键才结束的3种方法
- MFC OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别
- junit测试和main方法多线程中遇到的问题
- 数据库中包含开始时间、结束时间,并且查询条件也有开始时间、结束时间的查询方法
- 页面中开始时间与结束时间默认为上个月的第一天与最后一天及相关名词解释
- 一个关于多线程的简单例子(两种实现方法)
- 七年之痒---让爱情在它开始的地方结束吧
- 多线程编程的简单例子
- qt多线程的简单例子
- ios多线程的简单例子
- 控制台多线程程序的结束方法
- 左中右3栏布局中最先显示中栏内容的方法
- 左中右3栏布局中最先显示中栏内容的方法
- 左中右3栏布局中最先显示中栏内容的方法
- 生成时间区间中工作日开始(周一)-结束(周五)日期对的方法
- js方法中获取开始标签和结束标签中间插入内容的方式(innerHTML/html())
- 如何实现android和服务器长连接呢?推送消息的原理
- 使用ubuntu的一些简单配置
- leetcode36Valid Sudoku
- hive函数 -- regexp_extract
- 一张图看懂SSL的工作原理
- 多线程中让main方法最先开始,最后结束的简单例子
- viewpager加载fragment出错Caused by: java.lang.IllegalStateException: The specified child already has a p
- 我的第一篇学习笔记
- css将书写模式变成纵向
- RTP协议全解(H264码流和PS流)
- 二叉排序树数组实现
- Android 性能优化 二 TraceView工具的使用
- 利用QtQuick实现UI的一个Demo
- IOS项目中的 Prefix.pch 和 Info.plist