1. 程式人生 > >主執行緒和子執行緒均迴圈10次,兩者交替執行50次

主執行緒和子執行緒均迴圈10次,兩者交替執行50次

我們應該時時保持面向物件程式設計的思想,可以將主子執行緒封裝到一個類中(類中的方法是兩個有關聯的方法)

,使用標記變數可以人為的控制執行緒的執行。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;

import javax.print.attribute.standard.MediaName;
import javax.security.auth.Subject;
import javax.swing.plaf.nimbus.AbstractRegionPainter;

import org.omg.CORBA.PUBLIC_MEMBER;

class zz {
	public static void main(String[] args) {
		final Run running = new Run();
		new Thread(
			new Runnable() {
				public void run() {
					for(int i = 0;i < 50;++ i){
						running.subLine(i);
					}
				}
			}
		).start();
		for(int i = 0;i < 50;++ i){
			running.mainLine(i);
		}
	}
}

class Run{
	private boolean mainLineStart = true;
	public synchronized void subLine(int i){
		if(mainLineStart){
			try {
				this.wait();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		for(int j = 0;j < 10;++ j){
			System.out.println("子執行緒第"+i+"輪次:"+j);
		}
		mainLineStart = true;
		this.notify();
	}
	
	
	public synchronized void  mainLine(int i){
		if(!mainLineStart){
			try {
				this.wait();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		for(int j = 0;j < 10;++ j){
			System.out.println("主執行緒第"+i+"輪次:"+j);
		}
		mainLineStart = false;
		this.notify();
	}
}


相關推薦

執行執行迴圈10兩者交替執行50

我們應該時時保持面向物件程式設計的思想,可以將主子執行緒封裝到一個類中(類中的方法是兩個有關聯的方法) ,使用標記變數可以人為的控制執行緒的執行。 import java.util.ArrayLi

ThreadPool執行池使用及解決執行執行執行順序問題

 執行緒池建立五個執行緒,每個執行緒往list中新增100個元素。synchronized只鎖執行緒共享變數list物件,程式碼段內僅新增元素及列印資訊。設定10ms睡眠時間給其餘執行緒機會。 ExecutorService fixedThreadPool = Execut

Unity進階篇:執行執行概念及注意點

先理解一下什麼是執行緒: 執行緒是作業系統級別的概念,現代作業系統都實現並且支援執行緒,執行緒的排程對應用開發者是透明的,開發者無法預期某執行緒在何時被排程執行。基於此,一般那種隨機出現的BUG,多與

【2019春招準備:22.執行生命週期(執行執行)】

參考:強烈推薦 https://blog.csdn.net/u013905744/article/details/73741056 run java application: 建立一個java虛擬機器程序,main執行緒和userThread都可以在裡面跑,當沒有執行緒的時候,退出程

【轉載】在C#中執行執行如何實現互相傳遞資料

using System; using System.Collections.Generic; using System.Text; using System.Threading; namespace ATest { class A { public static

執行demo-執行執行交替執行

package Thread; /** * 實現效果:主執行緒執行10次,子執行緒執行100次,主執行緒和子執行緒迴圈交替執行50次     主要演示synchronized和wait、notify的使用  * 適用場景:只有兩個執行緒的情況,呵呵  */ public c

執行 執行的同步控制

有道面試題  子執行緒迴圈10次 然後 主執行緒 迴圈100次  如此往復50次  通過主執行緒和子執行緒的同步實現 public class Test { public static void main(String args[]) { //子執行緒迴圈

android執行執行的區別

android 主執行緒和子執行緒有什麼區別本文較為深入的分析了android中UI主執行緒與子執行緒。分享給大家供大家參考。具體如下:在一個Android 程式開始執行的時候,會單獨啟動一個Process。預設的情況下,所有這個程式中的Activity或者Service(S

Android之用Handler實現執行執行互相通訊以及執行執行之間的通訊

1、上程式碼 activity_main.xml檔案 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.

Linux多執行──執行執行分別迴圈一定次數

條件變數 條件變數是執行緒可用的另一種同步機制。條件變數給多個執行緒提供了一個回合的場所。條件變數與互斥量一起使用時,允許執行緒以無競爭的方式等待鐵定的條件發生。 名稱: pthread_cond_wait/pthread_cond_timedwait 目標:

執行執行通訊執行用bundle傳送資料到執行

package com.wangcan; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; im

Windows執行執行的關係

在Windows下最重要的兩個概念,一個是程序,一個是執行緒。先來說下程序和執行緒的關係,程序是靜態的,它相當於一個存放資料的空間,是放在記憶體中的,可以理解為一個工廠。而執行緒是動態來執行執行緒中的程式碼的,相當於工廠中的工人。看到執行程式碼你可能就會想到CPU了,沒錯,執

C# 多執行詳解 Part.02(UI 執行執行的互動、ProgressBar 的非同步呼叫)

       我們先來看一段執行時會丟擲 InvalidOperationException 異常的程式碼段: private void btnThreadA_Click(object sender, EventArgs e) { Thread thread

tap點擊一內部程序執行

tap 得到 data 程序 -s document 解釋 bsp 一次 調試過程發現,使用 $(document).on(‘tap‘, ‘.children2‘, function () { //內部程序 }) 點擊children2的時候,程序在裏面執行了兩次。百度得

quartz定時任務實現只執行以後不再執行

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schem

機房三維(3D)監控系統機房視覺化動力環境監控系統兩者有什麼功能特點?

隨著計算機技術的迅速發展,數字交換技術的日新月異,計算機通訊已經深入到社會生活並對社會經濟的發展起著決定性的作用,而在這其中計算機機房資料中心作為載體更是整體生態鏈中的重中之重。如果沒有統一的監控系統進行管理,主要是依靠值班人員的定時巡檢來進行系統監控,由於值班人員知識面和安全管理的問題,值班人員不

【小家java】Java中執行(父執行)與執行的通訊聯絡

相關閱讀 【小家java】java5新特性(簡述十大新特性) 重要一躍 【小家java】java6新特性(簡述十大新特性) 雞肋升級 【小家java】java7新特性(簡述八大新特性) 不溫不火 【小家java】java8新特性(簡述十大新特性) 飽受讚譽 【小家java】java9

Qt中通過訊號槽在執行執行中進行資料傳遞

QT中兩個執行緒之間進行自定義型別資料傳遞 兩個執行緒中進行資料傳遞時,傳遞的資料放到佇列中(queue),所以在這個過程中,需要在傳遞前將資料拷貝、儲存到佇列中;為了儲存這些引數,Qt需要construct、destruct、copy這些物件,為了讓Qt知道

java執行結束執行結束之間的關係

情況1:正常情況下,主執行緒啟動了子執行緒,主執行緒、子執行緒各自執行,彼此不受影響。 當你在run一個Java application的時候,這個時候系統會開一個程序。然後這個程序啟動了Main執行緒。Java程序確定虛擬機器中沒有執行緒執行的時候,退出程序。或者也可以用