真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java線程并發(fā)代碼 java多線程并發(fā)編程

java線程的經(jīng)典代碼

package threadgroup;

我們擁有十多年網(wǎng)頁設(shè)計和網(wǎng)站建設(shè)經(jīng)驗,從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設(shè)計師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、手機(jī)網(wǎng)站制作、成都h5網(wǎng)站建設(shè)、等業(yè)務(wù)。無論您有什么樣的網(wǎng)站設(shè)計或者設(shè)計方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計服務(wù)并滿足您的需求。

class ThreadDemo3 extends Thread {

private String name;

private int delay;

public ThreadDemo3(String sname, int i_delay) {

name = sname;

delay = i_delay;

}

public void run() {

try {

sleep(delay);

} catch (InterruptedException e) {

}

System.out.println("多線程測試!\n" + name + "\n" + delay);

}

}

public class testMyThread {

public static void main(String[] args) {

ThreadDemo3 th1,th2,th3;

th1 = new ThreadDemo3("線程1", (int) (Math.random() * 900));

th2 = new ThreadDemo3("線程2", (int) (Math.random() * 900));

th3 = new ThreadDemo3("線程3", (int) (Math.random() * 900));

th1.start();

th2.start();

th3.start();

}

}

package threadgroup;

public class threadDemo {

public static void main(String[] args) {

Thread t = Thread.currentThread();

t.setName("你好嗎?");

System.out.println("正在進(jìn)行的Thread是:" + t);

try {

for (int i = 0; i 5; i++) {

System.out.println("我不叫穆繼超" + i);

Thread.sleep(3000);

}

} catch (Exception e) {

// TODO: handle exception

System.out.println("Thread has wrong" + e.getMessage());

}

}

}

package threadgroup;

public class threadDemo2 implements Runnable {

public threadDemo2() {

Thread t1 = Thread.currentThread();

t1.setName("第一個主進(jìn)程");

System.out.println("正在運行" + t1);

Thread t2 = new Thread(this, "");

System.out.println("在創(chuàng)建一個進(jìn)程");

t2.start();

try {

System.out.println("使他進(jìn)入第一個睡眠狀態(tài)");

Thread.sleep(2000);

} catch (InterruptedException e) {

System.out.println("Thread has wrong" + e.getMessage());

}

System.out.println("退出第一個進(jìn)程");

}

public void run() {

try {

for (int i = 0; i 5; i++) {

System.out.println("進(jìn)程" + i);

Thread.sleep(3000);

}

} catch (InterruptedException e) {

// TODO: handle exception

System.out.println("Thread has wrong" + e.getMessage());

}

System.out.println("退出第二個進(jìn)程");

}

public static void main(String[] args) {

new threadDemo2();

}

}

java實現(xiàn)兩個線程,一個打印奇數(shù),一個打印偶數(shù),這兩個線程如何并發(fā)執(zhí)行?

package test;

public class Test33{

private static int state = 1;

private static int num1 = 1;

private static int num2 = 2;

public static void main(String[] args) {

final Test33 t = new Test33();

new Thread(new Runnable() {

@Override

public void run() {

while(num1100){

//兩個線程都用t對象作為鎖,保證每個交替期間只有一個線程在打印

synchronized (t) {

// 如果state!=1, 說明此時尚未輪到線程1打印, 線程1將調(diào)用t的wait()方法, 直到下次被喚醒

if(state!=1){

try {

t.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

// 當(dāng)state=1時, 輪到線程1打印5次數(shù)字

for(int j=0; j1; j++){

System.out.println(num1);

num1 += 2;

}

// 線程1打印完成后, 將state賦值為2, 表示接下來將輪到線程2打印

state = 2;

// notifyAll()方法喚醒在t上wait的線程2, 同時線程1將退出同步代碼塊, 釋放t鎖

t.notifyAll();

}

}

}

}).start();

new Thread(new Runnable() {

@Override

public void run() {

while(num2100){

synchronized (t) {

if(state!=2){

try {

t.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

for(int j=0; j1; j++){

System.out.println(num2);

num2 += 2;

}

state = 1;

t.notifyAll();

}

}

}

}).start();

}

}

java多線程并發(fā)的問題

回答這個問題需要先弄清楚線程的概念和線程的生命周期。

線程:是指程序代碼的一次執(zhí)行,是動態(tài)的過程。樓主在定義OneTh這個實現(xiàn)Runnable接口類的時候肯定復(fù)寫了他的run()方法。onet1和onet2是兩個線程,也就是說雖然他們的run()方法相同,但是是執(zhí)行了兩次的。

計算機(jī)中CPU的調(diào)度過程:現(xiàn)在的電腦看上去能同時實現(xiàn)多任務(wù),像是一邊上QQ,一邊聽音樂,還可以一邊上網(wǎng)。但計算機(jī)中的CPU只有一個,它沒有分身術(shù),不可能真正意義上實現(xiàn)同時運行這么多程序。而是采用了一種時間片輪轉(zhuǎn)的方式,為每個應(yīng)用程序賦予極短的時間,然后高速的在不同的程序間切換,至于每次切換到那個程序,這個要由CPU和線程的優(yōu)先級來決定。

線程的生命周期:創(chuàng)建時是初始化了這個線程,調(diào)用start方法時,是讓這個線程進(jìn)入了可運行狀態(tài),注意是可運行,不是正在運行。就像上面說的,在某一時刻CPU具體要運行誰是由CPU和線程的優(yōu)先級決定的。當(dāng)線程被CPU運行時,就會開始執(zhí)行run方法,但可能執(zhí)行到一半時,CPU又被其他可運行線程搶走,而只能暫停執(zhí)行。

JAVA程序線程的運行:在我們使用java命令來運行程序時,這時候已經(jīng)開始了兩個線程,一個是main()方法的線程,一個是垃圾回收的線程。當(dāng)樓主調(diào)用start方法開啟另外兩個線程時。這時候由于CPU來決定運行哪個線程。所以雖然noet1是先開啟的,但在執(zhí)行noet1時,CPU可能又去跑去執(zhí)行main線程了,然后就會開啟onet2.

還有我覺得主線程結(jié)束了,只不過其他兩個線程仍在繼續(xù)運行。所以會打印出結(jié)果。

樓主如果還有什么不明白的話可以繼續(xù)問或者相互討論。

java 多線程并發(fā)請求數(shù)據(jù),只要有一條線程獲得數(shù)據(jù),則其他線程終止運行,并打印出獲得的數(shù)據(jù)

這邊我寫了一個例子,兩個線程同時獲取隨機(jī)數(shù),當(dāng)獲取的值為68的時候則停止所有進(jìn)程。

這是目錄結(jié)構(gòu):MyThreadOne和MyThreadTwo是兩個線程,TestMain是主函數(shù),MyThread繼承Thread類。

MyThread.java

package?com.xsx.test;

public?class?MyThread?extends?Thread?{

public?void?stopThread()?{}

}

MyThreadOne.java

package?com.xsx.test;

import?java.util.Random;

public?class?MyThreadOne?extends?MyThread{

private?boolean?isOK?=?true;

Random?random?=?new?Random();//演示

public?void?stopThread()?{

this.isOK?=?false;

}

@Override

public?void?run()?{

while(isOK)?{

int?x?=?random.nextInt(10000);

System.out.println("Thread?One:?"?+?x);

if(x?==?68)?{

TestMain.stopAll();

System.out.println("My?Value?is?"?+?x);

break;

}

}

//這邊你結(jié)合自己的邏輯來寫,總之,是通過isOK來控制線程的

}

}

MyThreadTwo.java

package?com.xsx.test;

import?java.util.Random;

public?class?MyThreadTwo?extends?MyThread?{

private?boolean?isOK?=?true;

Random?random?=?new?Random();//演示

public?void?stopThread()?{

this.isOK?=?false;

}

@Override

public?void?run()?{

while(isOK)?{

int?x?=?random.nextInt(10000);

System.out.println("Thread?Two:?"?+?x);

if(x?==?68)?{

TestMain.stopAll();

System.out.println("My?Value?is?"?+?x);

break;

}

}

}

}

TestMain.java

package?com.xsx.test;

import?java.util.HashMap;

import?java.util.Iterator;

import?java.util.Map;

public?class?TestMain?{

public?static?MapString,?MyThread?threadPool?=?new?HashMapString,?MyThread();//定義一個線程池

/***

?*?終止所有線程

?*/

public?static?void?stopAll()?{

IteratorMyThread?threads?=?threadPool.values().iterator();

while(threads.hasNext())?{

threads.next().stopThread();

}

threadPool.clear();

}

public?static?void?main(String[]?args)?{

//實例化兩個線程獲取到隨機(jī)數(shù)為68時就停止進(jìn)程,并輸出

MyThread?thread1?=?new?MyThreadOne();//實例化線程1

MyThread?thread2?=?new?MyThreadTwo();//實例化線程2

threadPool.put("thread1",?thread1);//將線程1放入線程池中

threadPool.put("thread2",?thread2);//將線程2放入線程池中

thread1.start();//運行

thread2.start();

}

}

項目已經(jīng)打包上傳


分享名稱:java線程并發(fā)代碼 java多線程并發(fā)編程
文章轉(zhuǎn)載:http://weahome.cn/article/doohgoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部