导航:首页 > 编程语言 > java读写线程交替执行

java读写线程交替执行

发布时间:2023-06-15 16:08:51

java怎么让主线程和自定义线程之间进行多次交替运行

java中要让主复线程和自定义线制程多次交替运行,可以设置一个变量X和一把锁L,L作为操作X的锁
第一个线程在X为偶数的时候执行,第二个线程在X为基数的时候执行,线程执行完之后把X++,然后唤醒等待L的所有线程;

Ⅱ JAVA 2个循环任务20秒交换执行

//直接拷过去就能用,兄弟,要是满意不要吝啬给分哦。
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;

public class ThreadTest extends JFrame implements KeyListener {
private Threada ta;

private Threada tb;

private JTextArea area;

public ThreadTest() {
area = new JTextArea();
area.addKeyListener(this);
this.add(area);

this.setBounds(200, 200, 400, 800);
this.setVisible(true);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
new ThreadTest();

}

public void keyPressed(KeyEvent key) {
int code = key.getKeyCode();
System.out.println(code);
if (code == 113) {
// 这里设置显示的参数。第一个不用管了。 第二个参数是多少秒显示。第三个是显示内容
ta = new Threada(area, 1, "任务A执行10秒");
tb = new Threada(area, 1, "任务B执行10秒");
this.ta.start();
this.tb.start();
}
if (code == 120) {
this.ta.setFlag(false);
this.tb.setFlag(false);
}
}

public void keyReleased(KeyEvent key) {
// TODO Auto-generated method stub

}

public void keyTyped(KeyEvent key) {
// TODO Auto-generated method stub

}

}

class Threada extends Thread {
private JTextArea area;

private long second;

private String note;

private boolean flag = true;

/**
* 创建对象时候 设置参数
*
* @param area
* 文本域
* @param second
* 线程 隔多少秒执行一次。单位是秒
* @param note
* 在文本域中出现的内容。
*/
public Threada(JTextArea area, long second, String note) {
this.area = area;
this.second = second;
this.note = note;
}

@Override
public void run() {
while (true && flag) {
try {
Thread.sleep(second * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.area.append("\n" + note);
}

}

public void setFlag(boolean flag) {
this.flag = flag;
}
}

Ⅲ 帮忙调一下一个java程序,如何实现多线程“让 main函数正在运行”和"thread函数正在运行" 交替出现

线程是不可控制的
在CPU认为合适的时机会随机放出一个位给某个线程来占用。
所以要控制两个线程(你这里是main线程和TestThread 线程)交替出现是不可实现的
但如果只是要这样
main函数正在运行
thread函数正在运行
thread函数正在运行
thread函数正在运行
thread函数正在运行
thread函数正在运行
thread函数正在运行
thread函数正在运行
thread函数正在运行
thread函数正在运行
main函数正在运行
main函数正在运行
main函数正在运行
main函数正在运行
main函数正在运行
main函数正在运行
main函数正在运行
main函数正在运行
thread函数正在运行
那是可能会出现的

Ⅳ 谁帮我实现以下Java中的线程交替执行控制,要求按顺序输出1到100,代码如下。

稍微修改下 未测试

packagecom.leejiliang.HomeworkDemo2;

/**
*定义打印输出类,定义两个数据输出方法,分别用于输出偶数和奇数
*
*@authorAdministratoreven偶数uneven奇数
*/
classPrintNumber{

booleanisEven=true;

publicvoidprintEven(){

for(inti=0;i<=100;i=i+2){
if(i%2==0){
synchronized(this){
while(!isEven){
try{
this.wait();
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
System.out.println("偶数:"+i);
isEven=false;
this.notify();
}
}
}

}

//输出1到100之间的奇数
publicvoidprintUnEven(){

for(inti=1;i<=99;i=i+1){
if(i%2!=0){
synchronized(this){
while(isEven){
try{
this.wait();
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
System.out.println("奇数:"+i);
isEven=true;
this.notify();
}
}
}
}
}

/**
*
*@authorAdministrator定义输出偶数的线程类
*/
{
privatePrintNumberpn=null;

publicThreadForEven(PrintNumberpn){
this.pn=pn;
}

@Override
publicvoidrun(){
pn.printEven();

}
}

/**
*定义输出奇数的线程类
*
*@authorAdministrator
*
*/
{
privatePrintNumberpn=null;

publicThreadForUneven(PrintNumberpn){
this.pn=pn;
}

@Override
publicvoidrun(){
pn.printUnEven();
}
}

//主函数,执行两个线程
classZeroToOneHundred{
publicstaticvoidmain(String[]args){
PrintNumberpn=newPrintNumber();
ThreadForEvente=newThreadForEven(pn);
ThreadForUneventu=newThreadForUneven(pn);
Threadthreadeven=newThread(te);
Threadthreaneven=newThread(tu);
threadeven.start();
threaneven.start();
}
}

Ⅳ java的多线程是交替占用CPU,不是真正的并行这个和单线程不是一样的吗为什么会效率会更高

比如某线程需要延时等待某操作完成,这时就可以用线程调度执行其他等待执行的线程,这样更完全地利用了cpu的性能,因此效率高

Ⅵ 编程JAVA 实现使用多线程数字从10到1两个线程的交替输出

class out implements Runnable
{
private int ticket = 100;
public synchronized void run()
{
while (true)
{
if (ticket>o)
{
System.out.println(Thread.currentThread().getName()+"="+"sale..."+ticket--);//若改成this.getName();不行因为接口里没有getName();
}
}
}
}
class RunnableDemo
{
public static void main(String[] args)
{
Ticket P = new Ticket();//先创造接口对象
Thread P1 = new Thread(P);//再把接口对象给Thread
Thread P2 = new Thread(P);
P1.start();
P2.start();
}
这是最基本的。。多线程里面玩的就是同步代码块。。都是手打的。。分给我吧,运行的时候运行RunnableDemo;

Ⅶ java多线程问题。两个线程交替打印。例如第一个线程打印1,接着第二个线程打印100,接着第一个线程打印2。

你这样写来两个线程实例源t1和t2间没有交互通信,各跑各的,当然不会达到你上面说的那个结果。要想达到你上面说的那个效果,必须进行线程间通信。比如,你可以让两个线程实例都对方的引用,在run函数里执行打印的方法后,就让t2跑,t1去睡觉(sleep())。等t2打印完后,又让t1跑,让t2去睡觉,这样即可。 给你思路,代码我就不写了。

阅读全文

与java读写线程交替执行相关的资料

热点内容
dede工具 浏览:507
5g网盟app怎么下载 浏览:486
微信备份老是连接中断 浏览:886
出台多少份文件 浏览:380
鞋子怎么搭配衣服的app 浏览:755
文件名使用的通配符的符号是什么 浏览:916
lol分卷文件损坏怎么办 浏览:276
6分管车螺纹怎么编程 浏览:732
海口农商银行信用卡app是什么 浏览:770
win10任务栏文件夹我的电脑 浏览:14
安卓nba2k18 浏览:776
文件夹密码怎么修改密码 浏览:271
苹果数据中心用什么服务器 浏览:769
省内圆通快递寄文件夹需要多少钱 浏览:740
iphone程序加密 浏览:884
win10文件夹调整文件行高 浏览:681
创意手绘教程 浏览:754
微信删除帐号信息 浏览:596
mysql操作类文件 浏览:649
绕过xp密码 浏览:158

友情链接