线程的强制运行

在java运行时至少会启动两个线程,一个是main线程,一个是垃圾收集线程。

 

在线程操作中,可以使用join()方法让一个线程强制运行,线程强制运行期间,其他线程无法运行,必须等待此线程完成之后才可以继续执行:

class myThread10 implements Runnable{

    public void run() {
        for(int i=0;i<50;i++){
            System.out.println(Thread.currentThread().getName()+" Runing "+i);
        }
       
    }
   
}
public class ThreadJoinDemo {
    public static void main(String[] args) {
        myThread10 m=new myThread10();
        Thread thread=new Thread(m, "Thread v");
        thread.start();
        for(int i=0;i<50;i++){
            if(i>10){
                try {
                    thread.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("Main thread running:"+i);
        }
    }

}

线程的强制运行

时间: 2024-08-07 00:22:12

线程的强制运行的相关文章

Java 并发编程中的 CountDownLatch 锁用于多个线程同时开始运行或主线程等待子线程结束

Java 5 开始引入的 Concurrent 并发软件包里面的 CountDownLatch 其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值.CountDownLatch的一个非常典型的应用场景是:有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以继续往下执行.假如我们这个想要继续往下执行的任务调用一个CountDownLatch对象的await()方法,其他的任务执行完自己的任务后调

一个线程加一运算,一个线程做减一运算,多个线程同时交替运行--synchronized

使用synchronized package com.pb.thread.demo5; /**使用synchronized * 一个线程加一运算,一个线程做减法运算,多个线程同时交替运行 * * @author Denny * */ public class Count { private int num = 0; private boolean flag = false; // 标识 //加法 public synchronized void add() { while (flag) { tr

Java 线程池ExecutorService运行原理 和FutureTask 的使用

一.线程池ExecutorService运行原理 ThreadPoolExecutor中有corePoolSize(核心线程)和maximumPoolSize(工作线程),默认核心线程和工作线程数量一致.1.当线ExecutorService线程池,使用submit,或者execute时2.先判断运行中的线程是否大于corePoolSize(核心线程)数量3.如果大于corePoolSize(核心线程)且maximumPoolSize(工作线程)未满则把该线程存着到工作线程等待.4.如果大于co

Jmeter 线程组、运行次数参数化(转)Jpara1=4 -Jpara2=5

Jmeter的jmx文件保存了线程数和运行次数等参数,这个参数可以在命令行中传入参数的方式来修改数值 步骤如下 1.生成线程和运行次数的参数 Jmeter选项中函数助手对话框,选中__P参数,这个参数是设置jmeter的属性值的,属性名称设置为para1  默认值设置为2,点击生成,就生成一个字符串,把这个字符串拷贝的线程数里面如下图,同样的方法设置para2,作为运行次数参数 2.保存jmx 文件 3.执行命令 jmeter -Jpara1=4 -Jpara2=5 -n -t thread_p

一个线程oom,进程里其他线程还能运行吗?

线程之间互相不影响:守护线程生活周期相同 引言 这题是一个网友@大脸猫爱吃鱼给我的提问,出自今年校招美团三面的一个真题.大致如下 一个进程有3个线程,如果一个线程抛出oom,其他两个线程还能运行么? 先说一下答案,答案是还能运行 不瞒大家说,真在面试中,我遇到这一题,我估计也是答错.因为我初看到这一题,内心嘿嘿一笑,觉得这题是在考察JVM的内存结构.我第一反应是OOM的常见情况堆溢出,也就是下面的这种异常 java.lang.OutOfMemoryError: Java heap space 先

为什么关闭了线程句柄,线程仍可以运行

主线程只要拥有线程句柄,事后就可以对线程执行某些操作,比如查询线程状态等等,靠的就是句柄,如果没有句柄,系统就无从知道要查的是那个线程的状态.但保持这个句柄不关闭,并不是线程运行的必要条件. 关闭线程句柄只是释放句柄资源,新开启线程后,如果不再利用其句柄,应该关闭句柄,释放系统资源.关闭线程句柄和线程的结束与否没有关系. 句柄可以认为是系统对资源(如线程)的分配的一个编号.关闭这个编号,对于不同的资源,效果不尽相同.对于线程来说,关闭这个编号并不意味着终止线程,只是之后很难再操纵这个线程.   

使用线程转储研究运行时的应用程序

性能分析工具运行程序需要在jvm调试模式下启动,这对实际已经在用的生产应用并不适合: 还好,可以让JVM产生一个完全的线程转储,它可以显示所有线程的状态和调用堆栈: Unix系统上了可以执行kill -3 <PID>来得到: Windows系统按组合键Ctrl+Break: 执行命令并不会杀掉java进程: 这里以window为例,一按快捷键,刷刷刷: more: F:\360\workspacemy\CovertJava\srcbin>java covertjava.chat.Chat

Win7 64位系统,IE11,如何让IE的Tab强制运行64位内核?

我的机器之前IE新打开的Tab,总是运行32位的,在注册表里找到 CURRENT_USER\Software\Microsoft\Internet Explorer\Main 添加一个DWORD (32-bit),名字TabProcGrowth ,值设置为0, 即可让IE新打开的Tab运行64位内核.

线程的状态以及相关的操作方法

线程的状态:创建线程Thread name =  new Thread() 就绪状态 运行状态 堵塞状态 死亡状态 线程的操作:1.在Thread类中可以通过getName()和setName()方法设置线程的名称,尽量避免名称的重复出现.要是在线程的操作过程中没有给线程一个名称,则在系统使用时会为线程分配一个名称,Thread-XX.并在其中Thread类中存在一个static属性. 1 package Rubbableclass; 2 class MyThread implements Ru